Android Intent Flag实现singleTask模式

Android Intent Flag

Android Intent 常用的Flag有以下几种:

  • FLAG_ACTIVITY_NEW_TASK
  • FLAG_ACTIVITY_CLEAR_TOP
  • FLAG_ACTIVITY_SINGLE_TOP
  • FLAG_ACTIVITY_CLEAR_TASK

Flag一般是组合使用。本文的结论需要增加一个前提,所有添加Flag启动的Activity本身的launch mode都是standard模式。

误区:很多同学认为(FLAG_ACTIVITY_NEW_TASK | FLAG_ACITIVTY_CLEAR_TOP)的组合使用能让普通的Activity以singleTask模式启动,这是错误的。普通的Activity以singleTask模式启动需要使用(FLAG_ACTIVITY_SINGLE_TOP | FLAG_ACITIVTY_CLEAR_TOP)

Intent Flag组合

FLAG_ACTIVITY_NEW_TASK和FLAG_ACITIVTY_CLEAR_TOP

效果:如果栈中存在该Activity,那么则将要跳转的Activity及其之上的Actviity全部清除,然后将创建要跳转的Activity放入栈中。因为跳转的Activity是重新创建的,所以不会走onNewIntent方法。

FLAG_ACTIVITY_NEW_TASK和FLAG_ACITIVTY_CLEAR_TASK

效果:跳转Activity所在的任务栈中所有Activity全部清除,然后创建要跳转的Activity并放入栈中。

FLAG_ACTIVITY_SINGLE_TOP和FLAG_ACTIVITY_CLEAR_TOP

效果:如果跳转Activity所在的任务栈中存在该Activity,那么将该Activity以上的Activity全部清除,然后调用跳转Activity的onNewIntent()方法。
这种组合方式等同于singleTask的launchMode模式。

你可能感兴趣的:(Android应用开发)