Intent的Flag

时间:2023-01-20 15:16:00

小段代码:

  1. Intent it=new Intent();
  2. it.setClass(Setting.this,Main.class);//从Setting跳转到Main
  3. it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//加上Flag
  4. startActivity(it);

根据上面的例子解释:
没有加Flag:如果没有Flag,上面的这段代码是新启动Main,不管是不是已经启动Main,这样在栈中从上往下的顺序就是Main,Setting,Main。这里有两个Main
FLAG_ACTIVITY_CLEAR_TOP:清除Main上面的所有Activity(包括Setting,所以这里就不用调用Setting的finish方法),如果Main已经启动了,重新启动,栈中从上往下顺序:Main
FLAG_ACTIVITY_REORDER_TO_FRONT:如果Main已经启动,则不会重新启动Main,而是把在后台没显示的Main带到最前面,栈中从上往下顺序:Main,Setting
FLAG_ACTIVITY_NO_HISTORY:启动Main后,如果再切换到其他Activity(包括按返回键、startActivity方法等),Main会自动调用finish方法,不会留在栈中。
FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS:启动过以后,在长按Home的跳出的最近启动程序中不会出现.

另,addFlags可添加多个Flag, setFlags可以通过|来设置多个Flag