关于这个问题,我试了一下。
例: A,B,C,D四个Activity,启动模式均为默认,依次启动,在D中启动B。
-
添加intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
效果:C会被清除出栈;然后B被finish掉,重新启动;D被销毁。重走生命周期,不会走onNewIntent()方法

Intent intent = new Intent(this, TestBActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
- intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP)
效果:C会被清除出栈;会调用B的onNewIntent()方法,不重新启动

Intent intent = new Intent(this, TestBActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
参考:Android 启动模式FLAG_ACTIVITY_CLEAR_TOP
重新启动:
Intent intent = new Intent(context, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
context.overridePendingTransition(0, 0);
context.finish();
当在D活动中使用带有FLAG_ACTIVITY_CLEAR_TOP标志的Intent启动B时,C会被从任务栈中清除,B被finish并重新启动。如果同时添加FLAG_ACTIVITY_SINGLE_TOP,B将调用onNewIntent()而不是重新创建。

2008

被折叠的 条评论
为什么被折叠?



