22

と の違いを説明するいくつかの投稿を読みましたonStart():onResume()アクティビティonStart()が表示onResume()されると呼び出され、アクティビティがユーザーからの操作の準備ができたときに呼び出されます。大丈夫。

私は常にonPause()andにコードを追加しただけで、 andonResume()を気にしたことはありません。onStart()onStop()

onStart()、vs .で何をするかの具体的な例を誰か教えてくださいonResume()。と についても同じことが言えますがonStop()onPause()はどのようにonStop()役立ちますか? ここで何か基本的なことが欠けているに違いありません。

4

3 に答える 3

15

onStop()(たとえば)他のアクティビティのためにアクティビティを離れるときに呼び出されます(編集:ほとんど。ダイアログをテーマにしたアクティビティに関するcommonswaresのコメントを参照)。たとえばstartActivity()、アクティビティ A で を使用してアクティビティ B を開始するとします。アクティビティ B で戻ると、アクティビティ A に戻り、onStart呼び出されます。

onPauseこれは、呼び出されずに呼び出される可能性のあるいくつかの理由とは異なりonStopます。たとえば、画面がタイムアウトしたり、待機ボタンを押したりすると呼び出されますが、 (使用可能なメモリなどによって)onPause呼び出されない可能性があるため、「軽い一時停止」です。onStopこの場合でも、おそらく最終的には onStop が呼び出されますが、すぐには呼び出されません。

わかりましたが、何の役に立ちますか

多くの場合、特定の用途はありませんが、あるかもしれません。アクティビティは、他のアクティビティを開始した後でもメモリ状態をスタックに保持するため、そのスタックは、開始されたアクティビティの数 (スタックの高さ) に応じて増加します。これにより、一部のアプリケーションで大量のメモリが使用される可能性があります。しばらくすると、フレームワークが開始され、スタック上のいくつかのアクティビティが強制終了されますが、これはかなり率直であり、戻ったときに多くの状態が保持されることを意味する可能性があります。

の使用例はonStart/onStop、別のアクティビティのためにアクティビティを離れるときに状態を解放し、戻ったときにそれを再作成する場合です。これを使用して、listadapters を null、空の画像キャッシュなどに設定しました (非常に特殊なアプリケーションで)。listadapter で表示されているビューで使用されているメモリを解放したい場合は、onstart でメモリを再作成し、GC がビューを取得できるようにします。これにより、アクティビティの残りのメモリ状態が存続する可能性が高くなります。

一部のリソースは、アクティビティ インスタンスが生きている間に保存するのに十分であると見なすことができ、一部はそれがスタックの最前面にある場合にのみ保存できます。アプリケーションで何が最適かを判断するのはあなた次第であり、作成/開始/再開の粒度がそれを提供します。

于 2012-03-29T22:17:09.347 に答える
1

onStart() は、onCreate() がタスクを終了した後に機能します。これは、broadcastReceiver を配置するか、ユーザーがこのアクティビティに戻るたびに一貫して表示される UI に関する状態を初期化するのに適した場所です。

onResume() は、戻るボタンを押してインテントまたはアクティビティに戻ったときに機能します。そのため、別のアクティビティがフォアグラウンドになるたびに onPause が呼び出されます。

于 2012-03-29T22:20:47.107 に答える
0

私はあなたの質問がここのドキュメントでかなり説明されていると思います:アクティビティライフサイクルについて読んでください

于 2012-03-29T22:12:33.220 に答える