onStop()
(たとえば)他のアクティビティのためにアクティビティを離れるときに呼び出されます(編集:ほとんど。ダイアログをテーマにしたアクティビティに関するcommonswaresのコメントを参照)。たとえばstartActivity()
、アクティビティ A で を使用してアクティビティ B を開始するとします。アクティビティ B で戻ると、アクティビティ A に戻り、onStart
呼び出されます。
onPause
これは、呼び出されずに呼び出される可能性のあるいくつかの理由とは異なりonStop
ます。たとえば、画面がタイムアウトしたり、待機ボタンを押したりすると呼び出されますが、 (使用可能なメモリなどによって)onPause
呼び出されない可能性があるため、「軽い一時停止」です。onStop
この場合でも、おそらく最終的には onStop が呼び出されますが、すぐには呼び出されません。
わかりましたが、何の役に立ちますか
多くの場合、特定の用途はありませんが、あるかもしれません。アクティビティは、他のアクティビティを開始した後でもメモリ状態をスタックに保持するため、そのスタックは、開始されたアクティビティの数 (スタックの高さ) に応じて増加します。これにより、一部のアプリケーションで大量のメモリが使用される可能性があります。しばらくすると、フレームワークが開始され、スタック上のいくつかのアクティビティが強制終了されますが、これはかなり率直であり、戻ったときに多くの状態が保持されることを意味する可能性があります。
の使用例はonStart/onStop
、別のアクティビティのためにアクティビティを離れるときに状態を解放し、戻ったときにそれを再作成する場合です。これを使用して、listadapters を null、空の画像キャッシュなどに設定しました (非常に特殊なアプリケーションで)。listadapter で表示されているビューで使用されているメモリを解放したい場合は、onstart でメモリを再作成し、GC がビューを取得できるようにします。これにより、アクティビティの残りのメモリ状態が存続する可能性が高くなります。
一部のリソースは、アクティビティ インスタンスが生きている間に保存するのに十分であると見なすことができ、一部はそれがスタックの最前面にある場合にのみ保存できます。アプリケーションで何が最適かを判断するのはあなた次第であり、作成/開始/再開の粒度がそれを提供します。