2017-04-14 4 views
2

直感的には、それを実行する最も適用可能なコールバックはonPause()です。しかし、ドキュメントの矛盾があるように思われる:ライフサイクルコールバックonPause()とonStop()に関するAndroidの矛盾したドキュメント

https://developer.android.com/guide/components/activities/activity-lifecycle.htmlによると:

onPause()の実行は非常に簡単であり、必ずしも操作保存を実行する 十分な時間を与えません。このため、 アプリケーションまたはユーザーデータを保存するためにonPause()を使用しないでください。ネットワーク を呼び出して、データベーストランザクションを実行してください。このような作業は、完了する前に を完了しないことがあります。代わりに、は、onStop()の間に負荷が高い シャットダウン操作を実行する必要があります。

比較的CPUを大量に消費する シャットダウン操作を実行するには、onStop()を使用する必要があります。。たとえば、データベースに情報を保存する時間がより適切でない場合は、 onStop()の間に情報を保存することがあります。 https://developer.android.com/reference/android/app/Activity.htmlによれば

:上記の表の「Kill​​able」欄

注 - killableあるとしてマークされているこれらの方法 ため、その方法は活性をホスティング 処理を戻した後にしてもよいです別の行のコードを実行することなく、いつでもシステムによってkillされる可能性があります。 は、に永続データ( ユーザー編集など)を書き込むためにonPause()メソッドを使用する必要があります。

したがって、実行する必要があるのはどこですか。これはどのようにして一般に行われますか?

答えて

1

良いキャッチ!

いくつかの注意総括する

  • は、そうでなければ、減速により負ユーザーエクスペリエンスを得るために、リスク、「本当に重負荷のシャットダウン操作を」ためonPause()を使用していません"このメソッドが戻るまで、次のアクティビティを再開します。"それ以外の場合は、
  • まだ躊躇する場合は、onSaveInstanceState()を使用してください。 onPause()onStop()の間で呼び出され、AFAIKが呼び出されることが保証されています。システムは方法に依存しているので、アクティビティが終了すると、システムは将来、その状態に戻ることができます ";
  • についてはonStop()、個人的にはです!は、メソッドが返るまで私のアプリケーションのプロセスを終了させた経験がありましたが、わかっているように公式のドキュメントに対応するSOの質問がありました。しかし、それは本当に非常にまれです。だからそれに頼るかどうかはあなた次第です。
関連する問題