关闭

安卓基础-----activity启动模式(1)

标签: 基础
128人阅读 评论(0) 收藏 举报
分类:

activity启动启动模式:
网上大牛写的我自己再一遍,方便自己记忆。
原文地址:http://blog.csdn.net/liuhe688/article/details/6754323

一。Activity 有四种启动模式:
1.standard
2.singleTop
3.singleTask
4.singleInstance


二。什么是task?task是一个具有栈结构的对象,一个task可以管理多个activity。启动一个应用,也就创建一个与之对应的task。


1.standard 启动模式是系统默认启动模式
看图
这里写图片描述
每次启动都会在task中生成新的activity实例,并且放到task顶部,回退时,task中退出一级。
简单点理解:**standard启动模式Activity栈从栈底到栈顶顺序为A1 -> B -> C -> A2…。(其中A、B、C等都表示不同的Activity实例,A1、A2则表示属于具有同一Activity类的不同实例)


2.singleTop(栈顶唯一)启动的时候系统判断栈顶是否有该实例,有则继续使用,没有启动新的。
如图:这里写图片描述 图中sectond启动first时候发现栈顶没有first则启动新的activity 于是有了图的机构。

简单理解:如果发现有对应的Activity实例正位于栈顶,则重复利用,不再生成新的实例。

简单点理解,singleTop即表示当前Activity栈中“栈顶唯一”,Activity跳转顺序或standard模式下栈结构如果为:A -> B -> C -> D1 -> D2,则singleTop启动模式为:A -> B -> C -> D1(此时回调D1的onNewIntent()..)。

特别注意:如果要启动的activity存在并且在栈顶,则会调用该activity的onNewInten()方法。


3.singleTask。启动activity时候系统首先检查栈中有无所要启动的activity。有但是不再栈顶,则把它之上所有的activity统统出栈,这样它也便在栈顶了处于显示状态。若果有并且在栈顶那更好,栈结构没有任何变化。如果没有则实例化新的。
如图:
这里写图片描述

简单理解:**如果发现所在Activity栈中有对应的Activity实例,则使此Activity实例之上的其他Activity实例统统出栈,使此Activity实例成为栈顶对象,显示到幕前。
简单点理解,singleTask表示当前Activity栈中“实例唯一”,Activity跳转顺序或standard模式下栈结构如果为:A -> B1 -> C -> D -> B2,则singleTask启动模式为:A -> B1(此时回调onNewIntent()..)**
注意:也是再次调用onNewIntent()方法。


4singleInstance 这种模式它会启用一个新的栈结构,将Acitvity放置于这个新的栈结构中,并保证不再有其他Activity实例进入。
图:这里写图片描述
简单理解:singleInstance所标识的Activity,当被启动时,系统会首先判断系统其他栈中是否已经存在此Activity实例,有则直接使用,并且其所在的Activity栈理论上只有它一个Activity元素。所以启动它的Activity与它并不在一个task中,所以才需要特别注意Back的问题。一般表示为:task1 A -> task2 B。

详细请看作者原文:http://blog.csdn.net/liuhe688/article/details/6754323

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3048次
    • 积分:168
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条
    文章分类