1,standard
每次都会新建一个Activity实例
2,singleTask
栈空间简易示意:A -- B -- C
最后用startActivity(intent)从C跳到A后,由于栈空间已经存在A的实例,A上面的Activity B和C出栈(即onDestroy销毁),A置于栈顶
如果A中重写了onNewIntent(...)方法,会同时接到C跳A的intent数据
3,singTop
栈空间简易示意:A -- B -- C
最后用startActivity(intent)从C跳到A后,即使栈控件已经存在A的实例,Android系统也会重新创建一个A的实例并且置于栈顶,当然重写的onNewIntent(...)方法也不会接到intent数据, 变成:
4,singleInstance(代码跳转逻辑:A -- B -- C -- A -- B -- C .....)
1,起始Activity非singleInstance (实际跳转顺序:A -- B -- C -- A -- B -- C .....)
A,C位于同一栈中,taskId相同, B在另一个栈中,与他们taskId不同,此栈在B未被销毁前只能有B一个Activity(B在创建之后,onNewIntent(...)也可以接到 其他Activity跳转的intent数据),整个过程中,B只创建了一次,A与C每次都创建一个实例
2,起始Activity为singleInstance(实际跳转顺序:A -- B -- C -- A -- C -- A -- C .....)
代码中第一种情况相同,但实际跳转顺序却不同,
第一次A -- B -- C 实际跳转完成之后,当从C回到A(A在创建之后,onNewIntent(...)也可以接到其他Activity跳转的intent数据)后,再从A跳 B时,却跳到了C页面,依次循环,整个过程中,B只是在一开始创建时出现了一次,之后从A都是直接跳C,A当然是单实例的,但是C也只创建了一次,相当于 是单实例
多次跳转按物理返回键时:
如果当前页面是A,则A销毁,出现C,接着C销毁,出现B,B销毁,应用程序结束
如果当前页面是C,则C销毁,出现B,接着B销毁,出现A,A销毁,应用程序结束
返回键的实际跳转情况属于正常,因为A的taskId, 与B,C不同,不在同一栈中
但singleInstance的第2中情况,第一次A--B--C--A跳完之后,为啥从A却进入了C并且是之前的实例C,并不是想象中的新创建一个Activity B的实例 ?
相关推荐
Android笔记之四种launchMode例程,Activity有四种加载模式: standard singleTop singleTask singleInstance
android中launchMode四种启动方法详解.pdf
Android Activity 的四种启动模式 管理Activity的生命周期 Android入门:Activity四种启动模式 Android Intent Android中Intent传递对象的两种方法(Serializable,Parcelable) 评论 29,85,96 序列化: ...
主要介绍了Android开发中Activity的四种launchMode,launchMode主要用于控制多个Activity间的跳转,需要的朋友可以参考下
Android Activity LaunchMode
我们今天要讲的是Activity的四种launchMode。 launchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个task里...
Android Activity 加载模式 测试
主要介绍了Android LaunchMode四种启动模式详细介绍的相关资料,这里对launchmode的使用方法进行了详解及启动模式的比较,需要的朋友可以参考下
这是学习 Android launchMode写的小例子
介绍了Android LaunchMode的4种启动方法。
android LaunchMode测试实例 代码
NULL 博文链接:https://mypyg.iteye.com/blog/919643
LaunchModeDemo android四种启动模式Demo。 配合此文http://blog.csdn.net/u011726984/article/details/49456287 风味更佳。
这个文章《Android启动模式浅析》中用到的例子代码,希望需要的朋友可以去下载。
NULL 博文链接:https://kevindan.iteye.com/blog/1991346
Activity是Android最常用的组件之一,也是最直观的组件,Activity启动时有四种模式,分别是: “standard” "singleTop" "singleTask" "singleInstance" 其中"standard"是默认模式。
之前遇到了onActivityResult提前调用的问题,说是和activity的启动模式有关,就做了一个Demo将四种启动方式都测试了一下,里面包括 onActivityResult的使用以及在四种不同启动模式下使用效果的不同情况
android-sample-launchking 了解Activity的四种launchMode。 标准,singleTop,singleTask和singleInstance。 通过玩应用程序直接学习并体验launchMode的差异有关原始文档,请参阅A代表标准B代表singleTop C代表...