Activity的启动模式用于设置任务栈管理其方式,通常有两种方式设置Activity启动模式。
一种是在AndroidManifest.xml文件中的<activity>节点中设置android:launchMode属性,
可以设置四种standard,singleTop,singleTask,singleInstance;详细含义点击查看《Android开发艺术探索》学习总结2 Activity启动模式,比如:
<activity android:name=".TransitionActivity" android:launchMode="standard"/>
另一种就是通过在开启Activity的时候,通过设置Intent Flag来设置,比如:
Intent intent=new Intent(this,TransitionActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);
下面就来介绍第二种方式几个常用的Flag
(1)FLAG_ACTIVITY_SINGLE_TOP
其效果和第一种singleTop模式一样
(2)FLAG_ACTIVITY_CLEAR_TOP
其效果和第一种singleTask模式一样
(3)FLAG_ACTIVITY_NO_HISTORY
其效果是当某个Activity以这种方式启动的时候,其再去启动其他Activity,则该Activity就消失了;比如,A以这种方式启动B,B启动了C,那么Activity的任务栈中就只有AC了
(4)FLAG_ACTIVITY_NEW_TASK
其效果是启动的activity在一个新的任务栈中,功能和第一种singleInstance模式一样,通常用于在一个没有Activity任务栈的环境里开启一个Activity,就好比我们经常使用的服务里面。