我必须管理一种情况:从当前活动(D
)我必须杀死某些特定活动(X
)以上的所有活动。我必须处理2个案件:
A - X - C - D
A - B - C - D
正如您在第一种情况中看到的那样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
答案 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
}
};