2017-01-21 17 views

答えて

0

でそれを行う必要がなくなことは、あなたのアプリケーションは、いくつかの永続的なデータを保存する必要がある場合には、必ず他に、onPause()メソッドでそれを行う必要があることは事実でありますonStop()メソッドに

短い答え: TRUE、onPause()は、さらに信頼性の高いonStop()以下です。そして、onStop()onDestroy()を呼び出さずにプロセスを強制終了する可能性が最も高い。

なぜですか?

enter image description here

あなたはメソッドが呼び出される順序をはっきり見ることができます:

活動のライフサイクルの図は、このシナリオで最高の援助があります。あなたが見ることができる最も安全な選択肢はonPause()で、ユーザーがあなたのアクティビティを離れていることを最初に示したもので、onStop()は、アプリケーションが停止状態に入ったことを示します。最後にonDestroy()メソッドがあります。したがって、一番早く永続データを保存するにはonPause()を選択するのが最も安全です。 チャンスとアクティビティの状態と放出との間の相関関係が明確にこの表で提供されています:さらに

Activity state and ejection from memory

+0

それは私が思ったことです。 'onPause()'と 'onStop()'にデータを保存すると、すべての可能なユースケースが捕捉されます。確かに、おそらく 'onPause()'は "最も安全な"ものですが、私は安全であるだけでなく、絶対安全なアプリにしたいと考えています。 –

2

重要なデータはに保存する必要があります。これは、アクティビティがフォーカスを失ったときやユーザーがアプリを終了するときに常に呼び出されるためです。一方、onStopは、ユーザーがアプリを終了しているときにのみ呼び出されますが、別のアクティビティに切り替える(フォーカスが失われた)ときには呼び出されません。また、あなたのアクティビティがバックグラウンドにある場合、アンドロイドは暗いメモリで強制的にアプリケーションプロセスを終了させます。この場合、onStopは呼び出されません。onDestroyが呼び出されます。だから、あなたはあなたの永続性のコードを実行する必要がどこは、onStop

+0

のポーズでは唯一guarantedする場所です。 –

+0

@ ConstantinPribluda私の答えはあなたのコメントの冗長バージョンです – Dummy

+0

ライフサイクルダイアグラムを見ると、onPause()が呼び出されずにアプリが殺されるというユースケースがあるようです。 –

関連する問題