2011-08-29 17 views
9

アクティビティライフサイクルの図を見ると、私はonPause()onStop()が両方とも "プロセス"が殺されることに気づくことに気付きました。これにより、ユーザーがアプリケーションを再開したいときにonCreate()を呼び出す必要があります。つまり、onStop()は必ずしも呼び出されているわけではなく、onDestroy()ではありませんが、onPause()は、アクティビティに表示される唯一のイベントである可能性があります。この場合、が呼び出されたかどうかにかかわらず、ユーザーが後でそれに戻ることができるように、onPause()はアプリケーションステータスの保存を処理する必要があります。Android onStop/onDestroy - これらはいつ使用できますか?

プロセスキルアクションで自然に排除されるアクティビティ固有のリソースをクリーンアップするためにonDestroy()が使用されています。 onDestroy()は良いことが他にありますか?

そして、何がonStop()に適していますか?なぜそれを無効にしたいのですか?

答えて

4

あなたの質問が正しい場合は、アプリケーションで何をしたいかによって異なります。たとえば、GPSを使用するアプリケーションをプログラミングしているとします。アクティビティがユーザーに表示されなくなったときに呼び出されるonStop()では、これらの要求を削除できます。または、アプリケーションが実行中の場合は、一部のサービスを停止することもできます。または、あなたは環境設定を保存することができます(代わりにonPause()で行うことをお勧めします)。または、サーバーへの永続的な接続を閉じることができます.....他に何かを考えたら、さらに追加します...

+0

何がonStop()ですか? – user574771

+0

申し訳ありません、私は 'onStop()'、lapsus mentisを参照していました。 :)私は私の答えを編集します –

+0

あなたは、もはや目に見えないアクティビティに応じてonStop()を使い、onPause()がGPSプロバイダを解放するのが早すぎるように聞こえます。しかし、私の懸念は、プロセスのkillがリソースのリリースを正しく処理できないことです。 – user574771

0

Another例えば、放送受信機を登録および登録解除することである。

通常、これらのものはonResumeとonPauseに配置されていますが、違いは微妙ですが、onResume/onPauseは別のアクティビティの背後に配置されたときに呼び出され、onStart/onStopはアクティビティが画面。

+0

もう1つの微妙な違いは、開始と停止、onStopが呼び出されずにプロセスが終了したときにどうなるかです。放送受信機はきれいに登録されていませんか?私はそうだと思う。 – user574771

2

あなたは、さらにドキュメントを読んでいれば、あなたは次のように表示されます:

活動状態に

の保存活動のライフサイクルの管理への導入が簡単に活動が一時停止していることを かを言及は、アクティビティ の状態は保持されます。これは、アクティビティオブジェクトが一時停止または停止したときにメモリ に保持されているため、メンバーのすべての情報が であり、現在の状態がまだ有効であるためです。したがって、ユーザがアクティビティ内で行った変更はすべてメモリに保持され、アクティビティ がフォアグラウンドに戻ると(「再開」)、その変更はまだ になります。

メモリを回復するためにシステムがアクティビティを破棄すると、アクティビティオブジェクトが破棄されるため、システムは単純に の状態をそのままで再開できません。代わりに、ユーザがそれに戻ってナビゲートする場合、システムは アクティビティオブジェクトを再作成する必要があります。しかし、ユーザが であり、システムがアクティビティを破棄して再作成したことに気付かずに、 がアクティビティをそのまま実行すると予想されます。この 状況では、追加のコールバック メソッドを実装することにより、 アクティビティ状態に関する重要な情報が確実に保持されるようにすることができます。 アクティビティの状態に関する情報を保存し、システムが アクティビティ。

要約:完了後、onStop()アクティビティオブジェクトはまだメモリに残っています。これは、システムが活動を復元するのに役立ちます。

非常に基本的な例:自分の行動をユーザーに示していると考えて、突然あなたの友人があなたに電話をかけたとします。あなたは理解することができます..

これで、リソース/オブジェクト/接続は、どのイベントでリリースされるべきかが分かります。

関連する問題