如何关闭onBackPressed上的android应用程序?

如何关闭onBackPressed上的android应用程序?,android,Android,我有三个屏幕(活动),比如A、B、C 屏幕转换顺序为A、B、C 我想在用户从第三个屏幕(屏幕C)点击“后退”按钮后关闭应用程序 如何操作?您可以在每个活动中注册以下广播接收器 /* Logout Intent Actions */ IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("com.package.ACTION_LOGOUT"); broadcastReceiver = new Broadcast

我有三个屏幕(活动),比如A、B、C

屏幕转换顺序为A、B、C

我想在用户从第三个屏幕(屏幕C)点击“后退”按钮后关闭应用程序


如何操作?

您可以在每个活动中注册以下广播接收器

/* 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 */
这将发送一个广播来关闭每个活动,并将应用程序置于后台


记住,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);

希望这将对您有所帮助。

在c活动中尝试以下代码“后退”按钮单击事件

System.exit(0);
或者您也可以使用以下代码

android.os.Process.killProcess(android.os.Process.myPid());

正如用户936414所建议的,当您从活动A转到B时,完成活动A,当您从B转到C时,完成活动B,因此当您到达活动C时,它将是堆栈上唯一的活动,按back将关闭它

像这样:

startActivity(new Intent(getApplicationContext(), NextActivity.class));
finish();

当从A开始活动B时,只需在A中调用finish()。同样,在开始C时调用finish B这是一个已经被问过的问题,在问这些问题之前在这里和这里搜索答案-1你可以在ActivityResult内部处理这个问题,可以调用finish或任何你想要的@CinetiK我提供的链接没有为我的问题提供适当的解决方案。这就是我发布这个问题的原因。我不想终止这个应用程序。这样你就可以在游戏中使用android:launchMode=“singleTask”,但是当我从屏幕C使用这个时,当我点击后退按钮时,它会移动到屏幕A。然后我调用finish()在屏幕A中。当我第二次启动应用程序时,它将显示屏幕C。当我从屏幕C按下后退按钮时,它将显示一个空白屏幕。不要在任何活动中使用finish()。FLAG_ACTIVITY_CLEAR_TOP将自动完成之前的所有活动。
startActivity(new Intent(getApplicationContext(), NextActivity.class));
finish();