`
king_tt
  • 浏览: 2119118 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android中的四种启动方式

 
阅读更多

Activity启动方式有四种,分别是:
standard
singleTop
singleTask
singleInstance

可以根据实际的需求为Activity设置对应的启动模式,从而可以避免创建大量重复的Activity等问题。
设置Activity的启动模式,只需要在AndroidManifest.xml里对应的<activity>标签设置android:launchMode属性,例如:

[html]viewplaincopy

1.<activity

2.android:name=".A1"

3.android:launchMode="standard"/>
下面是这四种模式的作用:
standard
默认模式,可以不用写配置。在这个模式下,都会默认创建一个新的实例。因此,在这种模式下,可以有多个相同的实例,也允许多个相同Activity叠加。
例如:
若我有一个Activity名为A1, 上面有一个按钮可跳转到A1。那么如果我点击按钮,便会新启一个Activity A1叠在刚才的A1之上,再点击,又会再新启一个在它之上……
点back键会依照栈顺序依次退出。
singleTop
可以有多个实例,但是不允许多个相同Activity叠加。即,如果Activity在栈顶的时候,启动相同的Activity,不会创建新的实例,而会调用其onNewIntent方法。
例如:
若我有两个Activity名为B1,B2,两个Activity内容功能完全相同,都有两个按钮可以跳到B1或者B2,唯一不同的是B1为standard,B2为singleTop。
若我意图打开的顺序为B1->B2->B2,则实际打开的顺序为B1->B2(后一次意图打开B2,实际只调用了前一个的onNewIntent方法)
若我意图打开的顺序为B1->B2->B1->B2,则实际打开的顺序与意图的一致,为B1->B2->B1->B2。
singleTask
只有一个实例。在同一个应用程序中启动他的时候,若Activity不存在,则会在当前task创建一个新的实例,若存在,则会把task中在其之上的其它Activity destory掉并调用它的onNewIntent方法。
如果是在别的应用程序中启动它,则会新建一个task,并在该task中启动这个Activity,singleTask允许别的Activity与其在一个task中共存,也就是说,如果我在这个singleTask的实例中再打开新的Activity,这个新的Activity还是会在singleTask的实例的task中。
例如:
若我的应用程序中有三个Activity,C1,C2,C3,三个Activity可互相启动,其中C2为singleTask模式,那么,无论我在这个程序中如何点击启动,如:C1->C2->C3->C2->C3->C1-C2,C1,C3可能存在多个实例,但是C2只会存在一个,并且这三个Activity都在同一个task里面。
但是C1->C2->C3->C2->C3->C1-C2,这样的操作过程实际应该是如下这样的,因为singleTask会把task中在其之上的其它Activity destory掉。
操作:C1->C2 C1->C2->C3 C1->C2->C3->C2 C1->C2->C3->C2->C3->C1 C1->C2->C3->C2->C3->C1-C2
实际:C1->C2 C1->C2->C3 C1->C2 C1->C2->C3->C1 C1->C2
若是别的应用程序打开C2,则会新启一个task。
如别的应用Other中有一个activity,taskId为200,从它打开C2,则C2的taskIdI不会为200,例如C2的taskId为201,那么再从C2打开C1、C3,则C2、C3的taskId仍为201。
注意:如果此时你点击home,然后再打开Other,发现这时显示的肯定会是Other应用中的内容,而不会是我们应用中的C1 C2 C3中的其中一个。
singleInstance
只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。
例如:
程序有三个ActivityD1,D2,D3,三个Activity可互相启动,其中D2为singleInstance模式。那么程序从D1开始运行,假设D1的taskId为200,那么从D1启动D2时,D2会新启动一个task,即D2与D1不在一个task中运行。假设D2的taskId为201,再从D2启动D3时,D3的taskId为200,也就是说它被压到了D1启动的任务栈中。
若是在别的应用程序打开D2,假设Other的taskId为200,打开D2,D2会新建一个task运行,假设它的taskId为201,那么如果这时再从D2启动D1或者D3,则又会再创建一个task,因此,若操作步骤为other->D2->D1,这过程就涉及到了3个task了。

分享到:
评论

相关推荐

    android中的Activity启动方式

    Android总Activity的启动模式分为四种: Activity启动模式设置: &lt;activity android:name=".MainActivity"android:launchMode="standard" /&gt; Activity的四种启动模式: 1.standard 模式启动模式,每次激活...

    活动的四种启动方式

    安卓Activity活动的四种启动方式,适合新手理解记忆活动的四种启动方式。

    Android 启动activity的4种方式及打开其他应用的activity的坑

    Android启动的四种方式分别为standard,singleTop,singleTask,singleInstence。 standard是最常见的activity启动方式,也是默认的启动的方式。当启动一个activity的时候他将进入返回栈的栈顶。系统不会管栈内是否...

    Activity四种启动模式详解

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

    简单介绍Android中Activity的四种启动模式

    在Android中Activity的启动模式决定了Activity的启动运行方式。 Activity有四种启动模式: 1. standard,默认的启动模式,只要激活Activity,就会创建一个新的实例,并放入任务栈中,这样任务栈中可能同时有一个...

    activity四种启动模式

    activity四种启动模式,

    Android编程中Activity的四种启动模式

    Activity启动方式有四种,分别是: standard singleTop singleTask singleInstance 可以根据实际的需求为Activity设置对应的启动模式,从而可以避免创建大量重复的Activity等问题。 设置Activity的启动模式,只需要...

    AndroidActivity的四大启动模式详解

    在Android中Activity的启动模式决定了Activity的启动运行方式。Activity启动模式设置:1.standard模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。2.singleTop如果在任务的栈顶正好存在该...

    Android启动流程app安装和启动原理.docx

    Android应用安装有如下四种方式 1.系统应用安装――开机时完成,没有安装界面 2.网络下载应用安装――通过market应用完成,没有安装界面 3.ADB工具安装――没有安装界面。 4.第三方应用安装――通过SD卡里的APK文件...

    Android 四大组件详解(一) Activity 提到的demo

    一个可以比较好理解Activity四种不同启动方式的demo

    android服务的开启方式及调用服务中的方法的实现

    该代码具体实现了Android四大组件之一的Service的启动方式,另外还实现了调用服务中的方法,同时代码中也给出详细的注释,希望可以帮到你

    java和android的面试题 大全

    4、 android 中有哪几种解析xml的类?官方推荐哪种?以及它们的原理和区别。 3 5、 ListView的优化方案 4 6、 请介绍下Android的数据存储方式。 4 7、 activity的启动模式有哪些?是什么含义? 6

    Android自主学习项目报告(一).doc

    线性布局---LinearLayout 表格布局---TableLayout 相对布局---RelativeLayout 帧布局---FrameLayout 网格布局---GridLayout 绝对布局---AbsoluteLayout (5)Activity的两种启动方式、四种状态、四种模式 直接启动 ...

    Android跨应用启动实例详解

    一、在开始之前,先来梳理一下跨应用启动的2种方式: 第一种:在Activity中,启动另一个app的组件。 第二种:在Service中,启动另一个app的组件。 从所周知,Android中有四大组件,那么为什么小编,只介绍Activity...

    Android项目设计与开发:服务的概念.ppt

    嵌入式Android项目设计与开发 第八章 服务 —— 服务的概念 服务的概念 服务(Service)是Android中的四大组件之一,它能够长期在后台运行且不提供用户界面。即使用户切到另一应用程序,服务仍可以在后台运行。 服务...

    Android实验五.doc

    Service有 两种启动方式,对应的,有两种停止方式。 【思考题】 【1】Service的两种启动方式是什么?对应的停止方式是什么? Startservice(普通启动方式)和bindservice(绑定方式)都可以启动service,对应 的停止...

    疯狂Android讲义源码

     12.3.1 在Android应用中使用  OpenGL ES 454  12.3.2 绘制平面上的多边形 457  12.3.3 旋转 463  12.4 绘制3D图形 465  12.4.1 构建3D图形 465  12.4.2 应用纹理贴图 469  12.5 本章小结 475  第13章 ...

    Activity 四种启动模式详细介绍

    在Android中Activity的启动模式决定了Activity的启动运行方式。 Android总Activity的启动模式分为四种: Activity启动模式设置: &lt;activity android:name=.MainActivity android:launchMode=standard&gt; &lt;...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

Global site tag (gtag.js) - Google Analytics