ミルターさんに同意!
onPause():
「アクティビティがフォーカスを失ったが、まだ表示されている場合 (つまり、フルサイズではない新しいアクティビティまたは透明なアクティビティがアクティビティの上にフォーカスされている場合)、そのアクティビティは一時停止されています。一時停止されたアクティビティは完全に生きています (すべての状態と状態を維持します)。メンバー情報を保持し、ウィンドウ マネージャーにアタッチされたままになります)、メモリが極端に少ない状況では、システムによって強制終了される可能性があります。」
Back を押さずに (HOME を長押しして) アプリケーションを交換すると、OS は onPause を呼び出します。onResume でアクティビティに戻ると (HOME をもう一度押したままにします)、すべてのプライベート変数が保持されている必要があります。しかし、ユーザーを制御することはできませんよね?!
ユーザーがアプリを離れることが予想され、OS が onStop を呼び出す場合、中断したところから再開する場合は、データを保存することをお勧めします。
タイマーもあります。ユーザーが戻ったときにデータを復元できるように、経過時間を保存する必要があります。保存する私の例は次のとおりです。
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
// Save UI state changes to the savedInstanceState.
// This bundle will be passed to onCreate if the process is
// killed and restarted.
savedInstanceState.putLong("elapsedTime", elapsedTime);
// etc.
}
そして、復元する私のコード:
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// Restore UI state from the savedInstanceState.
// This bundle has also been passed to onCreate.
elapsedTime = savedInstanceState.getLong("elapsedTime");
}
これらのメソッドをクラス内に配置すれば、準備完了です。私の場合、文字列「elapsedTime」はシステムのキーであり、一意でなければならないことに注意してください。保存するデータごとに一意の文字列を使用します。たとえば、「startClock」、「ClockTextColor」など...