1. standard 默认启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。 2. singleTop 如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)。3. singleTasksingleTask和下面的singleInstance 一样,都是全局唯一的,且 at the root of the new task。区别是singleInstance 栈中只能有它自己,它开启的activity,也要放在另一个栈里面(具体放在哪个栈里是由taskAffnity决定的,默认应该是原来那个应用程序所在的栈)而由singleTask开启的activity会放在singleTask所在的栈。 如果在栈中已经有该Activity的实例,就重用该实例(不会调用onCreate方法,会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。 (!注意:只在AndroidManifest.xml配置activity为singleTask是不会创建新的任务栈的,还必须配置taskAffinity属性为一个不同于整个应用程序taskAffinity的,该activity才会新开一个任务栈;如没有配置taskAffinity属性,则虽然没有分配新的任务栈,但其他特性还是有的,如重新打开时会调用newIntent,且会清空上面所有的activity等)4. singleInstance 也需要和taskAffinity共用才能产生效果。在一个新栈中创建该Activity实例,并让多个应用共享该栈中的该Activity实例。一旦该模式的Activity的实例存在于某个栈中,任何应用再激活该Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。系统不会让其他的activities运行在所有持有的task实例中,这个activity是独立的,并且task中的成员只有它,任何其他activities运行这个activity都将打开一个独立的task。
推荐整理分享对activity的四种启动模式的理解,希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
备注:
1、task是比进程更高级的一个逻辑概念,用户的一个task,有可能包括多个进程,(如:application中调用了支付宝支付功能,则会把支付宝支付模块添加到自己的task中执行,但支付宝支付模块却是一个独立的进程,跑在支付宝的进程下的);一个进程也可以存在于多个task中,通过adb shell dumpsys activity可以观察到。
2、singleTask和singleInstance回退时都遵守先把进入的栈一个个弹出后再进入另一个栈回退。所以,他们回退顺序有可能与用户的操作顺序不同(特别是singleInstance)
参考:
[android view]标签云原理、难点以及简单实现总结 标签云效果很酷,比如最出名的wordle,看看能否在andorid上实现,才发现并不容易,因为我是想做可视化而并不是为了分词,所以感觉难点在布局。这里
CloudEditText CloudEditText(EditText内容分不同块显示,支持校验,删除块,添加块,得到块代表的字符串集合)GitHub地址:
Android基础知识_Activity启动模式 一、启动模式介绍启动模式,简单地说就是Activity启动时的策略,在AndroidManifest.xml标签中的android:launchMode属性设置。Activity启动模式有4种,分别为standard