关于这个问题,我试了一下。
例: 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);
start