詳細アクティビティに参加していて、ホームアクティビティに戻りたいのですが、詳細アクティビティで戻るボタンを押すことと終了メソッドを呼び出すことの違いは何ですか?
4 に答える
onBackPressed()
その時からメソッドをオーバーライドしていない場合はActivity
、を呼び出しfinish()
ますActivity
。finish()
明示的に呼び出す必要はありません。
Activity
そのため、の上部にあるものが表示されActivity Stack
ます。そしてempty Stack
、あなたはアプリケーションからかなりなります。
Overrideメソッドがある場合は、アクティビティを破棄するために明示的にonBackPressed()
呼び出す必要があります。finish()
finish()
コードから呼び出すことができます。コードから戻るボタンを押すことはできません。通常、戻るボタンを押すと、への呼び出しが発生しfinish()
ます。違いは、コードとユーザーのどちらにアクションを開始させるかです。
終了ボタンと戻るボタンの両方を取得したら、アクティビティを破棄します。私が見つけた唯一の違いは、戻るボタンを押すとそれが呼び出されるということです。onBackPressイベント
onBackPressed:
アクティビティでonBackPressed()メソッドを定義している場合は、戻るボタンを押すとonBackPressed()メソッドが呼び出されるため、backButtonのデフォルトの動作をオーバーライドしていることを意味します。
アクティビティからonBackPressed()メソッドをオーバーライドしていない場合は、アクティビティに対してfinish()が呼び出されます。finish()を明示的に呼び出す必要はありません。アクティビティスタックの一番上にあるアクティビティが表示され、空のスタックがある場合は、アプリケーションからかなり離れます。Override onBackPressed()メソッドがある場合は、finish()を明示的に呼び出してアクティビティを破棄する必要があります。
終了:
finish()メソッドを実装すると、現在のアクティビティを閉じることを目的としています。アプリケーションにトップバックスタックがない場合は、Androidホーム画面にリダイレクトされます。アクティビティでfinish()を呼び出すと、onDestroy()メソッドが実行されます。このメソッドは次のようなことを行うことができます。
- アクティビティが管理していたダイアログをすべて閉じます。
- アクティビティが管理していたカーソルをすべて閉じます。
- 開いている検索ダイアログをすべて閉じます
また、onDestroy()はデストラクタではありません。実際にオブジェクトを破壊することはありません。これは、特定の状態に基づいて呼び出される単なるメソッドです。そのため、スーパークラスのonDestroy()が実行されて戻った後も、インスタンスは引き続き有効であり、非常に良好です*。Androidは、ユーザーがアプリを再起動したい場合に備えてプロセスを維持します。これにより、起動フェーズが高速化されます。プロセスは何も実行せず、メモリを再利用する必要がある場合、プロセスは強制終了されます