2012-03-29 13 views
14

onStart()onResume()の違いについて説明している投稿を読んだことがあります。アクティビティが表示されるとonStart()が呼び出され、アクティビティがユーザからの操作の準備ができたらonResume()が呼び出されます。良い。android:onStart()、onStop()を使用する場合は?

私はいつもonPause()onResume()にコードを追加しましたが、onStart()onStop()で決して迷惑をかけませんでした。

onResume()と比べて、onStart()で行うことができる具体例がありますか? onStop()onPause()と同じですが、onStop()はどのように便利ですか?私はここで何か根本的なものを欠いているに違いない

答えて

9

onStop()読んで(例えば)と呼ばれます:。ほとんどcommonswaresのコメントを見ますダイアログのテーマ活動について)。 たとえば、アクティビティAでstartActivity()を使用してアクティビティBを開始した場合、アクティビティBで戻るを押すとアクティビティAに戻り、onStartが呼び出されます。

これはと呼ばれる理由のいくつかとは異なり、onStopが呼び出されていないと呼ばれることがあります。たとえば、画面がタイムアウトするか、またはスタンバイのボタンを押した場合は、が呼び出されますが、利用可能なメモリやその他のものによってはonStopではないため、「軽い休止」です。 onStopはおそらくこの場合でも最終的に呼び出されますが、すぐに呼び出されることはありません。

[OK]を、しかし、どのような使用は

のは、多くの場合、具体的な使用はありませんが、あるかもしれません。他のアクティビティーを開始した後でも、アクティビティーはスタック上にメモリー状態を保持するので、開始されるアクティビティーの数(スタックの高さ)に応じてスタックが増加します。 これにより、一部のアプリケーションで大きなメモリが使用される可能性があります。しばらくすると、フレームワークはスタックに入り、いくつかのアクティビティをスタックで殺しますが、これはむしろ鈍く、おそらく多くの状態が復帰時に保持されることを意味します。

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

一部のリソースは、アクティビティインスタンスが稼働中に保存するだけでなく、一部がスタックの前面にある場合にのみ保存することができます。アプリケーションの中で何が最善であるかを決めるのはあなた次第であり、作成/開始/再開の細かさはあなたに与えられます。

+2

"他のアクティビティのアクティビティを終了するときにonStop()が呼び出されます。"実際にはアクティビティが見えなくなったときに呼び出されます。ダイアログテーマのアクティビティがフォアグラウンドに来ると、 'onStop()'は呼び出されません。 – CommonsWare

+0

良い点。この例では、呼び出し元のアクティビティがバックグラウンドで表示されている可能性があります(リサイクルしたものが悪い)。私はそれが起こる場所の例とそれを使ってメモリ使用量を減らす方法を示していましたが、これは良い免除です。原則としてそれはまだ良いです。私はお互いを呼び出すダイアログアクティビティのスタックをまだ見ていません。 –

+0

ああ、間違いなく、ダイアログをテーマにした活動は珍しいことです。 – CommonsWare

0

私はあなたの質問がかなりのドキュメントにここで説明されていることを考える:あなたは、いくつかの他のアクティビティ(編集のための活動を離れるときActivity Life Cycle

+0

'onStart()'は 'onCreate()'が終了した後に動作します。 'onResume()'は、 'Intent'や' Activity'に戻るときに戻るボタンを押して動作します。 –

+1

@ハムザそれは真実ではありません。アクティビティが表示されない状態から表示状態に変わるたびに、onStart()が呼び出されます。 –

+0

男性はいません!私はアプリケーションでonStart()を実行しました。これは、アクティビティを読み込んだ後にwebserviceからデータを取得したかったからです。これをAndroid Guide [link](http://developer.android.com/reference/android/app/Activity.html)で確認してください。 –

1

onStart()は、onCreate()がそのタスクを終了した後に動作します。 ユーザーがこのアクティビティに戻るときに一貫して表示する必要があるUIについて、broadcastReceiverを設定するか、または状態を初期化するのがよいでしょう。

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

関連する問題