小段代码:
- Intent it=new Intent();
- it.setClass(Setting.this,Main.class);//从Setting跳转到Main
- it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//加上Flag
- 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