web-dev-qa-db-ja.com

呼び出されることが保証されていないのに、なぜonDestroy()を実装するのですか?

Android Activity Lifecycle)によると、呼び出されることが保証されている唯一のコールバック(アクティビティが実行中状態を離れる場合(通常は期待される場合)はonPause()です。

そのため、onStop()onDestroy()を実装するのが理にかなっているシナリオがあると仮定する必要がありますが、実際には保証は呼び出されません。

アクティビティがStopped状態を介してRunning状態に戻ることが可能な場合、onStop()を実装する必要があることを理解しています(直接返す代わりにそれを行う理由は別の質問です)。

しかし、onDestroy()の必要性は、すべてのクリーンアップ/状態保存をonPause()に配置できる場合、私にはわかりません。

onDestroy()を実装することが理にかなっている、実際のアプリの状況(車の運転などとは異なります)を説明できますか?

45
uTubeFan

finish()を明示的に呼び出すと、onDestroyが呼び出されます。あなた自身。

メインアクティビティは、マップアクティビティでstartActivityForResultを呼び出します。

LocationListenerを使用してアクティビティをマップします。ユーザーはマップをクリックし、ローカルレストランを選択します。

次に、アクティビティは、メインアクティビティに送り返される追加の設定を行い、明示的にfinish()を呼び出します。それ自体およびonDestroyで、LocationListenerおよび起動した他の変数を強制終了します。

ドキュメントでこれを見つけました

onDestroy()=アクティビティが破棄される前に受け取る最後の呼び出し。これは、アクティビティが終了している(finish()と呼ばれている)か、システムがアクティビティのこのインスタンスを一時的に破棄してスペースを節約しているために発生する可能性があります。

25
Blundell

OnDestroy()を実装するのが理にかなっている、実際のアプリの状況(車の運転などとは異なります)を説明できますか?

構成の変更をキャプチャする場合。すべてSDKに含まれています: http://developer.Android.com/reference/Android/app/Activity.html

3
user146043