完成某些活动之上的所有活动,但仅当该特定活动处于堆栈

时间:2017-01-11 13:14:41

标签: android android-activity back-stack

我必须管理一种情况:从当前活动(D)我必须杀死某些特定活动(X)以上的所有活动。我必须处理2个案件:

  1. A - X - C - D
  2. A - B - C - D
  3. 正如您在第一种情况中看到的那样X处于堆栈状态,因此在删除堆栈之后应该如下所示:A - X

    在第二种情况下,X不在堆栈上,因此堆栈应保持不变。

    到目前为止我尝试的是:在D中,我将LocalBroadcastManager发送到“无处不在”。我只在X注册了LocalBroadcast。因此,如果X处于堆叠状态,它将接收LocalBroadcast并尝试通过以下方式杀死“我自己以上的所有活动”:

        private BroadcastReceiver broadcast = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                Intent intents = new Intent(XActivity.this, XActivity.class);
                intents.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);
            }
        };
    

    但这失败了:

    android.content.ActivityNotFoundException: No Activity found to handle Intent
    

1 个答案:

答案 0 :(得分:2)

将您的intent更改为intents

private BroadcastReceiver broadcast = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        Intent intents = new Intent(XActivity.this, XActivity.class);
        intents.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intents);  //<-- here
    }
};