关闭

Activity的启动模

225人阅读 评论(0) 收藏 举报
分类:

四种启动模式:standard,singleTop,singleTask,singleInstance

通过在AndroidManifest.xml的<activity>标签中指定android:launchMode属性来设置启动模式


standard

standard是活动的默认启动模式,我们知道Android是通过栈来管理活动的,而此模式,系统不会验证此活动是否已经存在都会在栈顶创建新的活动实例!

例如:活动本身启动自己,启动了几次我们就要销毁几次才能关闭所有的活动。这些同样的活动在栈中也是有不同的位置名称的,可以确定是新的活动实例。


singleTop

如果指定了singleTop模式,在启动活动时系统会检测栈顶是否已经有该活动,如果有则直接使用,并不会创建新的活动实例了。

但是如果要启动的这个活动实例没有在栈顶位置,此时启动此活动实例的时候还是会重新创建此活动的实例!从他的命名Top就可以看出这个意思!


singleTask

 使用singleTask模式,系统就会检测栈中是否已经有此活动,如果有则直接使用并把这个活动上的所有活动全部清除栈,没有则新建此活动。


singleInstance

singleInstance是最复杂也是最特殊的模式了,如果活动指定了singleInstance模式,那么系统会启用一个新的栈来管理这个活动。(其实如果singleTask模式指定了不同的taskAffinity,系统也会启动新的栈)

如果在工作中需要多个应用来访问此活动实例,就需要用到此模式,其他三种启动模式是无法做到的。因为每个应用都会有自己的栈,同一个活动在不同的栈入栈时肯定会新建实例,从而导致数据不一致。而此模式新建的一个单独的栈来管理此活动,多个应用访问时就会共用同一个栈中实例,并不会新建实例了,从而解决了数据不一致的问题。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:43738次
    • 积分:1005
    • 等级:
    • 排名:千里之外
    • 原创:54篇
    • 转载:2篇
    • 译文:0篇
    • 评论:31条
    文章分类
    最新评论