文档章节

Android启动模式

JasonZhao
 JasonZhao
发布于 2016/05/17 18:58
字数 843
阅读 62
收藏 2

github地址:https://github.com/xiaoliang0227/android_launchMode_demo

Android有四种启动模式,分别为standard、singleTop、singleInstance、singleTask。设置启动模式可以在AndroidManifest.xml中设置Activity的launchMode属性,Activity的默认启动模式为standard。所以,如果想设置Activity为standard模式可以不用给launchMode设置属性值。

下面分别介绍下四种启动模式

standard模式:

standard模式为Activity的默认启动模式,该模式下所有启动的Activity都在同一个task容器栈中,只要每次调用startActivity等相关方法都会创建一个Activity的实例,所以同一个task容器栈中可能存在着相同的Activity实例。

singleTop模式:

设置Activity的启动模式为singleTop可以通过配置AndroidManifest.xml文件中的Activity的launchMode属性值来实现。

如字面意思,task 容器栈顶保持一个Activity的实例,如果某个Activity已经处于task容器栈顶,则下次创建Activity的实例时就会重用处于task容器栈顶的Activity实例。但是,如果Activity的实例并非在task容器栈的栈顶位置,则会重新创建新的Activity的实例,该模式在task容器栈中可能存在着相同的Activity实例。

singleTask模式:

singleTask模式是比较狠的模式,如果设置了Activity的launchMode为singleTask,则会把Activity实例对象上面的所有实例全部清除掉,并且,task容器栈中永远只保留唯一一个实例对象。

如果已经有了Activity的实例在task 容器栈中,不论Activity的实例是在task容器栈的任何位置,都会被重用。所以,如果你的应用无论如何启动目标Activity,都要保证只有一个唯一的Activity实例,则可以使用该模式。

singleInstance模式:

       singleInstance模式,简单的说就是可以共享某个Activity。比如说,如果应用1的task容器栈中已经创建AActivity的实例,应用2如果想要调用AActivity则不需要重新创建AActivity的实例,直接可以共用AActivity的实例。

  使用到命令如下,不知道如何使用的请Google

  • adb shell
  • dumpsys activity activities

standard模式跳转实例:

MainActivity – StandardModeActivity – SingleTopModeActivity – StandardModeActivity – SingleTaskModeActivity – StandardModeActivity

 

Activities=[

ActivityRecord{dc3115c u0 com.zyl.demo.launchmode/.activity.MainActivity t37},

ActivityRecord{281ef31d u0 com.zyl.demo.launchmode/.activity.StandardModeActivity t37},

ActivityRecord{1ea68d5 u0 com.zyl.demo.launchmode/.activity.SingleTopModeActivity t37},

ActivityRecord{24f679b6 u0 com.zyl.demo.launchmode/.activity.StandardModeActivity t37},

ActivityRecord{c16c753 u0 com.zyl.demo.launchmode/.activity.SingleTaskModeActivity t37},

ActivityRecord{235a6dbc u0 com.zyl.demo.launchmode/.activity.StandardModeActivity t37}]

 

singleTop模式跳转实例:

MainActivity – StandardModeActivity – SingleTopModeActivity – StandardModeActivity – SingleTaskModeActivity – SingleTopModeActivity – SingleTopModeActivity

 

Activities=[

ActivityRecord{19f60dab u0 com.zyl.demo.launchmode/.activity.MainActivity t38},

ActivityRecord{1566727f u0 com.zyl.demo.launchmode/.activity.StandardModeActivity t38},

ActivityRecord{15b23277 u0 com.zyl.demo.launchmode/.activity.SingleTopModeActivity t38},

ActivityRecord{11291550 u0 com.zyl.demo.launchmode/.activity.StandardModeActivity t38},

ActivityRecord{9c32b05 u0 com.zyl.demo.launchmode/.activity.SingleTaskModeActivity t38},

以下部分被重用

ActivityRecord{2bab27b2 u0 com.zyl.demo.launchmode/.activity.SingleTopModeActivity t38}]

 

singleTask模式跳转实例:

 

MainActivity—SingleTaskModeActivity—StandardModeActivity—StandardModeActivity—SingleTaskActivity

 

Activities=[

ActivityRecord{149cb473 u0 com.zyl.demo.launchmode/.activity.MainActivity t35},

以下部分被重用

ActivityRecord{2bdeacf4 u0 com.zyl.demo.launchmode/.activity.SingleTaskModeActivity t35},

以下部分被清除掉

ActivityRecord{1ddba651 u0 com.zyl.demo.launchmode/.activity.StandardModeActivity t35},

ActivityRecord{3edad97 u0 com.zyl.demo.launchmode/.activity.StandardModeActivity t35}]

ActivityRecord{2bdeacf4 u0 com.zyl.demo.launchmode/.activity.SingleTaskModeActivity t35}]

 

 

MainActivity – StandardModeActivity – StandardModeActivity – StandardModeActivity – SingleTaskModeActivity – StandardModeActivity – StandardModeActivity -- SingleTaskModeActivity

 

Activities=[

ActivityRecord{2bf38438 u0 com.zyl.demo.launchmode/.activity.MainActivity t36},

ActivityRecord{ed8c94e u0 com.zyl.demo.launchmode/.activity.StandardModeActivity t36},

ActivityRecord{28c0b426 u0 com.zyl.demo.launchmode/.activity.StandardModeActivity t36},

ActivityRecord{24263403 u0 com.zyl.demo.launchmode/.activity.StandardModeActivity t36},

 

以下部分被重用

ActivityRecord{2048d3ac u0 com.zyl.demo.launchmode/.activity.SingleTaskModeActivity t36},

以下部分被清除掉

ActivityRecord{308226ca u0 com.zyl.demo.launchmode/.activity.StandardModeActivity t36},

ActivityRecord{10c522 u0 com.zyl.demo.launchmode/.activity.StandardModeActivity t36}]

ActivityRecord{2048d3ac u0 com.zyl.demo.launchmode/.activity.SingleTaskModeActivity t36}]

 

singleInstance模式跳转实例:

 

MainActivity – StandardModeActivity – SingleInstanceActivity – StandarModeActivity – SingleTopModeActivity

 

Task id:#39

Activities=[

ActivityRecord{2361f6d3 u0 com.zyl.demo.launchmode/.activity.MainActivity t39},

ActivityRecord{1b8681e6 u0 com.zyl.demo.launchmode/.activity.StandardModeActivity t39},

以下Activity实例没有

SingleInstanceActivity

ActivityRecord{233b107 u0 com.zyl.demo.launchmode/.activity.StandardModeActivity t39},

ActivityRecord{1d3013cc u0 com.zyl.demo.launchmode/.activity.SingleTopModeActivity t39}]

 

Task id:#40

Activities=[

ActivityRecord{2229e7be u0 com.zyl.demo.launchmode/.activity.SingleInstanceModeActivity t40}]

© 著作权归作者所有

共有 人打赏支持
JasonZhao
粉丝 1
博文 35
码字总数 12913
作品 0
浦东
技术主管
Android中Activity启动模式详解

Android中Activity启动模式详解   在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方...

大凉龙雀
2013/05/25
0
1
针对Activity的启动模式理解1---standard模式

Activity有4种启动模式: standard、singleTop、singleTask、singleInstance; Activity的四种启动模式 涉及到了Task任务: 在Android中一些列相关的操作所启动的Activity构成了一个完整的任...

风清入舞
2012/08/28
0
0
Android中Activity启动模式详解

 在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方式。   Android总Activity的启动...

带梦想一7飞
2013/05/23
0
0
Android Activity中的四种启动模式

Android总Activity的启动模式分为四种: <activity android:name=".MainActivity" android:launchMode="standard" /> 【standard】 默认模式启动模式,每次激活Activity时都会创建Activity,......

恰同学少年
2015/07/27
0
0
Activity的四种加载方式

配置activity时可指定android:launchMode属性,该属性用于配置改Activity的启动模式。该属性支持以下4个属性值。 standard:标准模式,默认的加载模式 singleTop:Task栈顶单例模式 singleTa...

dailei1021
2015/11/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

20180920 rzsz传输文件、用户和用户组相关配置文件与管理

利用rz、sz实现Linux与Windows互传文件 [root@centos01 ~]# yum install -y lrzsz # 安装工具sz test.txt # 弹出对话框,传递到选择的路径下rz # 回车后,会从对话框中选择对应的文件传递...

野雪球
今天
1
0
OSChina 周四乱弹 —— 毒蛇当辣条

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 达尔文:分享花澤香菜/前野智昭/小野大輔/井上喜久子的单曲《ミッション! 健?康?第?イチ》 《ミッション! 健?康?第?イチ》- 花澤香菜/前野智...

小小编辑
今天
6
2
java -jar运行内存设置

java -Xms64m #JVM启动时的初始堆大小 -Xmx128m #最大堆大小 -Xmn64m #年轻代的大小,其余的空间是老年代 -XX:MaxMetaspaceSize=128m # -XX:CompressedClassSpaceSize=6...

李玉长
今天
1
0
Spring | 手把手教你SSM最优雅的整合方式

HEY 本节主要内容为:基于Spring从0到1搭建一个web工程,适合初学者,Java初级开发者。欢迎与我交流。 MODULE 新建一个Maven工程。 不论你是什么工具,选这个就可以了,然后next,直至finis...

冯文议
今天
1
0
RxJS的另外四种实现方式(四)——性能最高的库(续)

接上一篇RxJS的另外四种实现方式(三)——性能最高的库 上一篇文章我展示了这个最高性能库的实现方法。下面我介绍一下这个性能提升的秘密。 首先,为了弄清楚Most库究竟为何如此快,我必须借...

一个灰
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部