3 つの画面 (アクティビティ) があります。A、B、C としましょう。
画面遷移はA→B→Cの順です。
ユーザーが3番目の画面(画面C)から「戻る」ボタンをタップしたら、アプリケーションを閉じたいと思います。
どうやってするの?
3 つの画面 (アクティビティ) があります。A、B、C としましょう。
画面遷移はA→B→Cの順です。
ユーザーが3番目の画面(画面C)から「戻る」ボタンをタップしたら、アプリケーションを閉じたいと思います。
どうやってするの?
Cアクティビティの戻るボタンのクリックイベントで次のコードを試してください
System.exit(0);
または、次のコードを使用することもできます
android.os.Process.killProcess(android.os.Process.myPid());
user936414 が示唆するように、アクティビティ A から B に移動するとアクティビティ A が終了し、B から C に移動するとアクティビティ B が終了するため、アクティビティ C に到達するとスタック上の唯一のアクティビティになり、押し戻すと閉じます.
このような:
startActivity(new Intent(getApplicationContext(), NextActivity.class));
finish();
次のブロードキャスト レシーバーをすべてのアクティビティに登録できます。
/* Logout Intent Actions */
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.package.ACTION_LOGOUT");
broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("MyApp","Loggin out from <activity>");
finish();
}
};
registerReceiver(broadcastReceiver, intentFilter);
/* Logout Intent Actions */
そして、あなたが呼び出すたびに
broadcastIntent.setAction("com.package.ACTION_LOGOUT");
sendBroadcast(broadcastIntent);
これにより、ブロードキャストが送信されてすべてのアクティビティが終了し、アプリがバックグラウンドになります。
Android での「アプリケーションを閉じる」という概念は、実際にシャットダウンするように命令することができないため、まったく異なることに注意してください。
アクティビティ B からアクティビティ C を開くときは、次のインテントを使用します。
Intent intent = new Intent(this, StartActivity.class)
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
これまでのすべての活動を終了します。
アクティビティ B からアクティビティ C を開始する場合、次のコードを使用してアクティビティ C を開始します。
Intent intent = new Intent(getApplicationContext(), ActivityC.class)
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
これがあなたを助けることを願っています。