49

Android アクティビティ ライフサイクルによると、呼び出されることが保証されている唯一のコールバック (アクティビティが実行中の状態を離れた場合、通常は予想される) はonPause().

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

アクティビティが Stopped 状態を介して Running 状態に戻る可能性がある場合に実装する必要があることを理解してonStop()います (直接戻るのではなく、なぜそうするのかは別の問題です)。

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

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

4

2 に答える 2

26

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

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

LocationListener を使用したマップ アクティビティ。ユーザーはマップをクリックして、地元のレストランなどを選択します。

次に、アクティビティは、メイン アクティビティに送り返されるいくつかのエクストラを設定し、次に、finish(); を明示的に呼び出します。それ自体と onDestroy で、呼び出した LocationListener とその他の変数を強制終了します。

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

onDestroy() = アクティビティが破棄される前に受け取る最後の呼び出し。これは、アクティビティが終了している (finish() が呼び出された) ため、またはシステムがスペースを節約するためにアクティビティのこのインスタンスを一時的に破棄しているために発生する可能性があります。これら 2 つのシナリオは、isFinishing() メソッドで区別できます。

于 2011-05-24T21:51:40.523 に答える
3

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

構成の変更をキャプチャする場合。それはすべて SDK にあります: http://developer.android.com/reference/android/app/Activity.html

于 2011-05-24T21:54:48.333 に答える