有没有办法从上次活动关闭Android应用程序?

时间:2011-11-24 09:00:50

标签: android

有没有办法关闭Android应用程序?我不能使用完成,因为它显示以前的活动,我有很多关闭活动(例如从第1到第2 ..到第10和第10我想退出应用程序)。怎么做到这一点?

5 个答案:

答案 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)

如何使用android:noHistory

  

当用户离开活动时,是否应该从活动堆栈中删除活动并完成(调用其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();

覆盖初始活动的onResume