Android:清除所有后台 Activity ,然后完成当前 Activity

标签 android android-activity back-stack

我的应用程序中有各种 Activity ,流程非常复杂。 我想要做的是,一旦连接了 USB 设备,我想清除并完成返回堆栈 Activity ,然后完成当前 Activity 和 System.exit(0) 以关闭应用程序。

我已经实现了 usb 设备监听器。我想知道如何清除并完成返回堆栈 Activity (如果有的话,它不会每次都有任何返回堆栈 Activity )然后完成当前的。

此外,如果我的 Activity A 在顶部,并且它在后堆栈中有 2 个 Activity (B,C)。现在,如果 Activity A 在后台运行并且连接了 USB,那么只有 Activity A 会收听它吗? (我在每项 Activity 中都实现了 USB 接收器。)

如何在我的应用程序不崩溃的情况下实现这一目标?

谢谢

最佳答案

finishAffinity() 方法将结束当前 Activity 和所有父 Activity ,但它仅适用于 Android 4.1 或更高版本

Source

finishAffinity() will Finish this activity as well as all activities immediately below it in the current task that have the same affinity

如果您想要所有 API 级别
在你的一项 Activity 中

Intent intent = new Intent(this, YourActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // this will clear all the stack
intent.putExtra("Exit me", true);
startActivity(intent);
finish();

然后在 YourActivity 的 onCreate() 方法中添加这个来完成 Activity

setContentView(R.layout.your_layout);
if( getIntent().getBooleanExtra("Exit me", false)){
   finish();
   return; // add this to prevent from doing unnecessary stuffs
}

关于Android:清除所有后台 Activity ,然后完成当前 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29568362/

相关文章:

android - 单击通知后启动器 Activity 将打开(应用程序已关闭)

Android:一个 Activity 可以有两个或多个类吗?

java - 如何从 Activity 中隐藏 Fragment - Android Studio

android - fragment addToBackStack() 和 popBackStackImmediate() 不起作用

android - 了解Android中的返回堆栈概念

android - 将 fragment 添加到后退堆栈(后退时出现空白屏幕)

android - 单击时获取卡片数据并传递给 Intent

android - 如何在一个 Activity 中隐藏android中的状态栏

java - 为什么我无法在内部目录中创建文件?

当内存不足时,Android 不会从堆栈中杀死 Activity