48

ユーザーがインテントの戻るボタンを押すと、アプリケーションは終了する必要があります。戻るボタンが押されたときにアプリケーションが終了することを確認するにはどうすればよいですか?

4

12 に答える 12

97

私のホームアクティビティでは、「onBackPressed」を次のようにオーバーライドします。

@Override
public void onBackPressed() {
   Intent intent = new Intent(Intent.ACTION_MAIN);
   intent.addCategory(Intent.CATEGORY_HOME);
   intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   startActivity(intent);
 }

そのため、ユーザーがホーム アクティビティで [戻る] を押すと、ホーム画面に移動します。

プログラムでホーム画面に移動するからコードを取得しました

于 2012-04-11T19:38:24.097 に答える
50

を使用して新しいアクティビティを開始した直後に、現在のアクティビティが新しいアクティビティの後ろにスタックされないようstartActivityに呼び出してください。finish()

編集 あなたのコメントに関して:

あなたが提案しているのは、Android アプリ フローが通常どのように機能するか、およびユーザーがどのように機能することを期待するかということではありません。本当にやりたい場合にできることstartActivityは、そのアクティビティに至るまでのすべてがであり、終了コードをチェックし、それをバブルバックstartActivityForResultするリスナーがあることを確認することです。詳細については、こちらをご覧onActivityResultください。基本的に、アクティビティを終了する前に使用して、選択した終了コードを設定します。親アクティビティがその終了コードを受け取った場合は、そのアクティビティに設定して終了します...setResult

于 2010-03-01T07:22:38.347 に答える
2

ユーザーがホームボタンを押さないのはなぜですか? その後、特定のアクティビティだけでなく、任意のアクティビティからアプリを終了できます。

アプリケーションがバックグラウンドで何かを実行し続けることが心配な場合。関連する onPause および onStop コマンドで必ず停止してください (ユーザーがホームを押したときにトリガーされます)。

ユーザーが次にアプリをクリックしたときにアプリが最初から開始されるようにすることが問題である場合は、画面に何らかのメニュー項目または UI ボタン​​を配置して、ユーザーをアプリの開始アクティビティに戻すことをお勧めします。アプリ。公式ツイッターアプリのさえずり鳥など

于 2010-10-29T17:21:09.147 に答える
1

まず第一に、Android では、戻るボタン内でこれを行うことはお勧めしませんが、提供されているライフサイクル メソッドを使用することをお勧めします。戻るボタンはアクティビティを破壊してはなりません。

アクティビティがスタックに追加され、UI スタックから最後に残ったアクティビティで戻るボタンが押されたときに、概要 (5.0 でマテリアル デザインが導入されたため、四角いボタン) からアクセスできます。ユーザーがアプリを閉じたい場合は、[概要] メニューからアプリをスワイプしてオフにする (閉じる) 必要があります。

アプリは、onPause()、onStop()、および onDestroy() ライフサイクル メソッドで、実行したくないバックグラウンド タスクとジョブを停止する責任があります。ライフサイクルとその適切な実装について詳しくは、http: //developer.android.com/training/basics/activity-lifecycle/stopping.htmlをご覧ください。

しかし、あなたの質問に答えるために、あなたが望む正確な動作を実装するためにハックを行うことができますが、私が言ったように、それはお勧めできません:

@Override
 public void onBackPressed() {

// make sure you have this outcommented
// super.onBackPressed();
 Intent intent = new Intent(Intent.ACTION_MAIN);
 intent.addCategory(Intent.CATEGORY_HOME);
 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 startActivity(intent);
}
于 2015-10-01T14:15:41.990 に答える
0

メソッドを使用して current_activity を終了しますfinish() onBack method of your current_activity

次に、強制終了を削除するために current_activity の onDestroy に以下の行を追加します。

@Override
public void onDestroy()
{
    android.os.Process.killProcess(android.os.Process.myPid());
    super.onDestroy();
}
于 2014-11-25T12:48:08.237 に答える