Android のライフ サイクルについて説明したいと思います。Android のライフ サイクルの仕組みの基本は理解していますが、いくつか質問したいことがあります。
Android アプリが最初に一時停止フェーズを通過するのはなぜですか?
Android アプリが IPhone アプリのように直接実行中から破棄に移行しないのはなぜですか? Pause->Stopped->Destroy から移動するのはなぜ Running->Destroy ではないのですか?
Android のライフ サイクルについて説明したいと思います。Android のライフ サイクルの仕組みの基本は理解していますが、いくつか質問したいことがあります。
Android アプリが最初に一時停止フェーズを通過するのはなぜですか?
Android アプリが IPhone アプリのように直接実行中から破棄に移行しないのはなぜですか? Pause->Stopped->Destroy から移動するのはなぜ Running->Destroy ではないのですか?
主にパフォーマンス上の理由から、アプリはすぐには破棄されません。Android Developer Activity Referenceから:
Android システムは、アプリケーション プロセスをできるだけ長く維持しようとしますが、メモリが少なくなると、最終的には古いプロセスを削除する必要があります。
たとえば、画面の電源がオンのままで、デバイスのメモリを解放する差し迫った必要がない場合は、アクティビティが完全に破棄されるのではなく、単に一時停止された方がユーザーにとって明らかに高速です。複数のエンド ライフサイクル ステージにより、これが可能になります。
さまざまなコールバックは、さまざまなことを示しています。これにより、クリーンアップ機能を迅速で重要な項目 (データベースやネットワーク接続などのシステム リソースからの切断) と長期的なタスク (アプリケーションの起動後もユーザー データを保持するなど) に分けることができます。アクティビティは可能な限り長く保持されるため、ユーザーがアクティビティを一時的に一時停止するだけで、コストのかかる操作を回避できます。
onPause()
は最初のコールバックであり、アクティビティがフォアグラウンドではなくなったことを示します。たとえば、ダイアログが表示されたり、ユーザーがホームボタンを押したりすると、アプリは一時停止します。たとえば、アプリがダイアログのために一時停止されている場合、まだ表示されているため、アプリを破棄したくないでしょう。
も受け取っonStop()
た場合は、アクティビティが表示されなくなったことを示します。この時点で、ユーザーには表示されているものが見えなくなります。これは、たとえば、ユーザーが別のアプリケーションを開いた可能性があります。ただし、この時点でも、ユーザーが後で戻ってくるのを早めるために、システムはアクティビティを保持している場合があります。(ただし、あなた/ユーザーがアクティビティを終了した場合、それは保持されず、ライフサイクル終了のコールバックに進みます。)
onDestroy()
アクティビティが破棄される前の最後のコールバックです。極端な場合、システムはこのメソッドを呼び出さずにアクティビティを破棄する可能性があることに注意してください。