【问题标题】:Android: Clear all backstack activities and then finish current activityAndroid:清除所有后台活动,然后完成当前活动
【发布时间】:2015-04-10 18:27:39
【问题描述】:

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

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

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

如何在应用不崩溃的情况下实现这一点?

谢谢

【问题讨论】:

    标签: android android-activity back-stack


    【解决方案1】:

    finishAffinity() 方法可以完成当前活动和所有父活动,但它仅适用于Android 4.1 或更高版本

    Source

    finishAffinity() 将完成此活动以及当前任务中紧接其下的所有具有相同亲和力的活动

    如果您想要所有 API 级别
    在您的一项活动中

    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
    }
    

    【讨论】:

    • @dhun 是的,检查一次
    • 在调用finishAffinity() 之后是否还需要添加finish() 来完成当前活动?
    • 另外,如果我的活动 A 在顶部并且它在后堆栈中有 2 个活动(B,C)。现在如果 Activity A 在后台运行并且 USB 连接,那么只有 Activity A 会监听它,对吗? (我在每个活动中都实现了 USB 接收器。)
    • 你不应该随机添加监听器到活动中。使用 BroadcastReceivers 接收事件
    • 就像,每个活动都可以在某个时候处于顶部,我必须在检测到 USB 设备时立即终止我的应用程序
    【解决方案2】:

    在我制作的一个应用程序中,我放了:

    if(Globals.isExit){
      finish();
    }
    

    在每个活动的每个 onResume() 方法中。

    Globals 是一个在 manifest.xml 中声明为 an 的类。 Global 类有一个名为 exit 的布尔值。

    在所有活动选项菜单中,包括一个将 Globals.exit 设置为 true 并调用 finish() 的退出选项

    那么任何未完成的活动都已完成。

    不确定您是否需要使用意图来清除后台堆栈,或者完成后是否会为您清除它。对不起,如果我在那一点上错了。

    抱歉打错字了,我正在打电话。

    【讨论】:

    • 您也可以使用 startForResult 打开每个活动,并在每个活动中在 on resultReturned() 方法中设置完成()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2011-06-13
    • 2012-10-08
    • 2014-07-24
    • 2011-09-06
    • 1970-01-01
    相关资源
    最近更新 更多