FLAG_ACTIVITY_SINGLE_TOP
等价于 singleTop
。位于栈顶的Activity会重用实例,调用onNewIntent函数接收intent。
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
FLAG_ACTIVITY_SINGLE_NEW_TASK
启动新的TASK,这个新的TASK取决于xml中设置的TaskAffinity(亲和性)属性。
首先去寻找是否存在相同亲和性的任务,如果存在,那么直接将这个Activity加入到这个任务中。若不存在,则新建一个任务来加入Activity。
FLAG_ACTIVITY_CLEAR_TOP
会将位于此Activity上放的Activity进行出栈销毁。
// singleTask的行为可使用代码表示为
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
两者区别:
xml设置为静态的,intent标记是动态的。
intent标记Flag的优先级更高一些。所以当标记Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP
后,尽管Activity为默认的standard模式&