11

デバッガーでアプリを実行すると、メイン スレッドと 3 つのバインダー スレッドが取得されます。

ボタンをクリックするとActivity.finish()が呼び出され、UI が閉じてホーム画面に戻るとアクティビティが終了するように見えます。

ただし、デバッガーでは、まだメイン スレッドと 3 つのバインダー スレッドが " (running) " として表示されます。

なぜこれが起こっているのか、私は困惑しています。さらに、アプリを終了した後に再度実行すると、アプリがActivity.onResume()を呼び出す原因となっています。

現在、アクティビティでこれらのメソッドをオーバーライドしていますが、それぞれで適切なスーパー関数を呼び出しています。

  • onDestroy()
  • onPause()
  • onResume()
  • onSaveInstanceState()

これに関するヘルプやアドバイスは大歓迎です!

4

1 に答える 1

21

アプリがメイン メモリから離れるタイミングを制御するのはユーザーではありません。OS が制御します。Activity.finishをよく見てください...

アクティビティが完了し、閉じる必要があるときにこれを呼び出します。ActivityResult は、onActivityResult() を介してあなたを起動した人に伝播されます。

メモリについては何も言っていないことに注意してください。Activity.onResume の呼び出しに関しては、まさにライフサイクルに期待されることです。onResume は再開後に呼び出されるだけでなく、onCreate 後にアプリが最初に起動されたときにも呼び出されることに注意してください。

あなたが尋ねたものとは正確には異なりますが、非常に重要なことを言っている終了ボタンに関するこの記事を読むことをお勧めします

[Activity.finish] は、戻るボタンを押すのとまったく同じです。

于 2011-01-04T15:09:18.867 に答える