例としてカメラを取り上げます。
コンポーネントを再初期化する必要はありませんが、アクティビティが再開したときにカメラを再初期化する必要があります。コンポーネントは、アクティビティの唯一の部分ではありません。ほとんどのアプリケーションは、システムリソースにもアクセスする必要があります。これらのリソースは、アプリケーションが一時停止または停止したときに解放されるため、アプリケーションが再開されたときに再度初期化する必要があります。また、Androidは状況によってはアプリケーションを破壊する可能性があります(メモリが不足しているなど)。そのため、リソースを解放して再初期化する必要があります。
さらに、アプリケーションの内部状態が存在する可能性があります。たとえば、本の読者。進捗状況を記録する必要があります。この内部状態はコンポーネントではありませんが、アクティビティが一時停止したときにそれらを保存する必要があります。
@Override
public void onPause() {
super.onPause(); // Always call the superclass method first
// Release the Camera because we don't need it when paused
// and other activities might need to use it.
if (mCamera != null) {
mCamera.release()
mCamera = null;
}
}
@Override
public void onResume() {
super.onResume(); // Always call the superclass method first
// Get the Camera instance as the activity achieves full user focus
if (mCamera == null) {
initializeCamera(); // Local method to handle camera init
}
}