有没有办法关闭Android应用程序?我不能使用完成,因为它显示以前的活动,我有很多关闭活动(例如从第1到第2 ..到第10和第10我想退出应用程序)。怎么做到这一点?
答案 0 :(得分:1)
Intent intent1 = new Intent(context, Activity.class);
intent1.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent1);
CLEAR TOP清除您的活动堆栈并完成您重定向的最后一项活动
如果您的活动堆栈正确,则清除顶部将适合您
选项2:
使用Borad演员接收器chk link
答案 1 :(得分:1)
当用户离开活动时,是否应该从活动堆栈中删除活动并完成(调用其
finish()
方法)并且它在屏幕上不再可见 - 如果应该完成,则为“true” ,如果不是“假”。默认值为“false”。 值“true”表示活动不会留下历史痕迹。它不会保留在任务的活动堆栈中,因此用户将无法返回该任务。
答案 2 :(得分:1)
我也有同样的问题,并没有找到一种方法来定义杀死一个应用程序。但后来我发现这是由于系统设计的固有性质。
如果要关闭应用程序,只需清除活动堆栈并释放使用资源即可。这看起来很奇怪吧?您应该有权关闭自己的应用程序。但实际上不建议在Android应用上使用它并且不遵循Android指南。此外,不要向用户提供退出选项。对于需要向用户提供“退出选项”的Android应用程序(例如,由于安全原因),我们应该提供“注销选项”,清除活动堆栈,免费资源和其他您想要做的事情,但从不杀死主要活动。
清除活动堆栈的解决方案已在此处显示其他答案:(1)使用Intent与标志FLAG_ACTIVITY_CLEAR_TOP或(2)使用广播。
使用FLAG_ACTIVITY_CLEAR_TOP,您可以在当前活动上放置一个Intent:
Intent intent = new Intent(getApplicationContext(), YourMainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
广播选项是将当前活动的广播发送到您要关闭的所有活动。
为此,您必须发送广播(在当前活动上):
Intent broadcastIntent = new Intent();
broadcastIntent.setAction("com.package.ACTION_SPECIFICNAME");
sendBroadcast(broadcastIntent);
finish();
并在其他活动上接收此广播(在您要关闭的每个活动上):
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.package.ACTION_SPECIFICNAME");
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("onReceive","Logout in progress");
finish();
}
}, intentFilter);
就是这样!我希望这个答案可以帮到你。对不起我的英语不好。 我知道这不是你等待的答案,但我认为这是当前(和“正确的”)解决方案。
答案 3 :(得分:0)
您可以使用(但不建议使用)
System.exit(0);
或者您可以在后台移动您的应用程序(这是Android管理多任务的方式)
moveTaskToBack(真);
答案 4 :(得分:0)
将此代码放在退出按钮上
Intent intent = new Intent(ExitConfirmationActivity.this, FirstActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
并使用finish();