一,LaunchMode种类
4种,"standard"(默认),“singleTop”,“singleTask“,”singleInstance“
二,应用场景
standard 每次都会新建,每个Task都可以有,且每个Task都可以有多个实例(每个Task都可以有,且可以有多个)
singleTop 当前实例如果在栈顶,就不新建实例,调用其OnNewIntent。 如不在栈顶,则新建实例(每个Task都可以有,且可以有多个,在栈顶时可复用)
singleTask 新建一个Task,如果已经有其他的Task并且包含该实例,那就直接调用那个Task的实例。(只有一个Task中会有)
singleInstance 新建一个Task,且在该Task中只有它的唯一一个实例。 (只有一个Task会有,且该Task中只有它)
三,图文理解
我觉得图很清晰
(1)standard
(2)singleTop
如果大家把standard启动方式看懂了,这个我就说一下区别,大家就明白了。如果我们要调用的Activity在Task栈顶,系统不会像在standard方式下创建一个新的实例,而是调用onNewIntent()方法,来引导intent到栈顶的实例。如果调用的Activity不在Task栈顶,系统此时调用方式与standard方式下的一模一样。
举个例子:
现在task栈元素为A-B-C-D(D在栈顶),这时候给D发一个启动intent,如果D是 “standard”的,则生成D的一个新实例,栈变为A-B-C-D-D。
如果D是singleTop的话,则不会生产D的新实例,栈状态仍为A-B-C-D
如果这时候给B发Intent的话,不管B的launchmode是”standard” 还是 “singleTop” ,都会生成B的新实例,栈状态变为A-B-C-D-B。
注意:在一个Activity处理新的intent的时候,用户不能使用Back button来返回到先前的Activity。直到新的intent到达onNewIntent()方法中后,才可以。
(3)singleTask
可以将TaskA TaskB理解为两个应用,比如TaskA是你当前的应用,TaskB是默认浏览器。
当到了TaskB中后,按返回键,需要先在TaskB中返回到root,然后才能返回到TaskA。
四,代码启动
intent的flag可以覆盖activity的启动模式
FLAG_ACTIVITY_NEW_TASK 类似singleTask
FLAG_ACTIVITY_SINGLE_TOP 类似singleTop
分享到:
相关推荐
Android的启动模式(android:launchMode) Activity 的启动模式(android:launchMode) Android Activity 的四种启动模式 管理Activity的生命周期 Android入门:Activity四种启动模式 Android Intent ...
介绍了Android LaunchMode的4种启动方法。
Activity是Android最常用的组件之一,也是最直观的组件,Activity启动时有四种模式,分别是: “standard” "singleTop" "singleTask" "singleInstance" 其中"standard"是默认模式。
NULL 博文链接:https://kevindan.iteye.com/blog/1991346
Android总Activity的启动模式分为四种: Activity启动模式设置: <activity android:name=".MainActivity"android:launchMode="standard" /> Activity的四种启动模式: 1.standard 模式启动模式,每次激活...
主要介绍了Android LaunchMode四种启动模式详细介绍的相关资料,这里对launchmode的使用方法进行了详解及启动模式的比较,需要的朋友可以参考下
这是学习 Android launchMode写的小例子
android LaunchMode测试实例 代码
android中launchMode四种启动方法详解.pdf
android:launchMode="singleTask" android:screenOrientation="portrait" android:theme="@style/horizontal_slide" android:windowSoftInputMode="adjustResize"> <!-- 添加好友 --> android:name=...
Android Activity 加载模式 测试
android 启动 LaunchMode
Android Activity LaunchMode
这个文章《Android启动模式浅析》中用到的例子代码,希望需要的朋友可以去下载。
Activity启动模式的设置在AndroidManifest.xml文件中,通过配置Activity的属性android:launchMode=””设置。 一、启动模式介绍 启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的...
在AndroidManifest.xml的活动中注册android:launchMode=” 四种启动模式 “ 1、standard:通过intent启动活动时直接创建新活动,如果启动的是自己这个活动也会启动新的自己的活动。(前面的活动被压进栈内,栈顶不断...
LaunchModeDemo android四种启动模式Demo。 配合此文http://blog.csdn.net/u011726984/article/details/49456287 风味更佳。
文章地址http://blog.csdn.net/kasogg/article/details/50433664。
本文实例讲述了Android编程中Activity的四种启动模式。...设置Activity的启动模式,只需要在AndroidManifest.xml里对应的标签设置android:launchMode属性,例如: <activity android:name=.A1 android:launch
本文主要介绍了关于Android Theme及解决启动黑屏的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 1.修改AndroidManifest.xml 设置App的全局Theme或者Activity的界面Theme ...