Android基础之Activity launchMode详解
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处!
Activity的lauchmode,是基础的属性,但也是App优化必须掌握的知识,它约束了Activity生命周期中各个方法的使用。做了许多个项目,对此有一点小小的总结,希望对大家能有些许帮助。
先讲一个概念性问题,AndroidManifest.xml中对Activity启动模式的定义android:launchMode="",有四个值可选,分别是:standard,singleTask,singleTop,singleInstance。它们主要用来定义Activity在堆栈中的存在方式。
一般一个应用打开的所有Activity都在一个栈里,位于栈底的Activity最后退出;打开了其它应用,那么就需要另开一个task,因为打开的Activity属于其它应用;每个应用都在自己的task里运行,也即是说每个task就是一个应用程序。
通常我们可以用一个Activity使用startActivity来启动另一个Activity,这个Activity可以是本应用的,也可以是其它应用,但不同的启动方式会给用户带来不同的体验,所以理解其中的意思会在完成任务时,做出更好体验度的应用来。
系统通过栈来管理Activity,栈是个先进后出的概念,通过back键来弹出Activity实例,位于栈底的Activity最后被弹出,一般要设为singleTask。
然后我们来一个个讲解各个值的意思,Acivity启动默认为standard,即可以不设,这样的Activity每次startActivity都会新建一个实例对象(Activity的实例,存在Activity的管理栈里),像标记为standard的Activity可以在栈里存在若干个,跟其他在一个task里工作,不新启动task。
singleTop指启动的Activity在栈顶则不新建,传递数据通过onNewIntent()。通常设为singleTop的Activity,保证它在最顶部,跟其他在同一个task里工作,不新启动task。
singleTask指该Activity如果存在,则不新建,直接使用,此时一般要实现onNewIntent()来接收数据传递;否则新建一个task,把此Activity装进去,被标记为singleTask的Activity会存放在同一个task中。
重新打开执行:onNewIntent->onRestart->onStart->onResume->onPostResume
singleInstance跟singleTask差不多,不过标记的Activity单独存在一个task里;有几个这样的Activity,则栈里会有几个这样的task来装它们,被标记为singleInstance的Activity不会放在同一个task中。
重新打开执行:onNewIntent->onRestart->onStart->onResume->onPostResume
另一点不同在于标记为singleTask的Activity被自启动后,有刷新界面的感觉,但被标记为singleInstance的则不会,所以需要刷新自身数据,自启动的同学就要注意了!
另外,当按下Home键时,如果你的当前页面不是主Activity,但再次进入的时候进入主Activity,这是为什么呢?
因为设置launchmode=singleTask|singleInstance的原因。我们知道这两个启动模式都是新启一个task,装载当前的activity,
所以,按下Home键再次启动时,当前栈里只有一个主activity,所以启动的还是它执行onRestart->onStart->onResume,而且按下Home前最后打开的页面会执行onDestroy方法。
现象2:如果主Activity启动方式是singleInstance,那么按下Home键,它始终会被关闭;
设为singleTask则不会。
总而言之,launchmode的设置是一种Activity栈管理的方式,如对象设置引用类型是一种内在管理方式一样。
Android基础之Activity launchMode详解的更多相关文章
- Android组件系列----Activity组件详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...
- Android application 和 activity 标签详解
extends:http://blog.csdn.net/self_study/article/details/54020909 Application 标签 android:allowTaskRep ...
- Android之路-------Activity的详解
前言 由于接近放假,公司在赶项目所以前段LP比较忙,没什么时间总结和写博客,只是准备睡觉的时候看看书,每天看的不算多,大概10多页左右吧,不过每天坚持如此的话那也是一个庞大的数字. 今天LP的任务完成 ...
- Android Fragment与Activity通讯详解
与activity通讯 尽管fragment的实现是独立于activity的,可以被用于多个activity,但是每个activity所包含的是同一个fragment的不同的实例. Fragment可 ...
- Android 之窗口小部件详解(三) 部分转载
原文地址:http://blog.csdn.net/iefreer/article/details/4626274. (一) 应用程序窗口小部件App Widgets 应用程序窗口小部件(Widget ...
- Android高效率编码-第三方SDK详解系列(一)——百度地图,绘制,覆盖物,导航,定位,细腻分解!
Android高效率编码-第三方SDK详解系列(一)--百度地图,绘制,覆盖物,导航,定位,细腻分解! 这是一个系列,但是我也不确定具体会更新多少期,最近很忙,主要还是效率的问题,所以一些有效的东西还 ...
- Activity知识点详解
Activity知识点详解 一.什么是Activity 官方解释: The Activity class is a crucial component of an Android app, and t ...
- Android图片缓存之Bitmap详解
前言: 最近准备研究一下图片缓存框架,基于这个想法觉得还是先了解有关图片缓存的基础知识,今天重点学习一下Bitmap.BitmapFactory这两个类. 图片缓存相关博客地址: Android图片缓 ...
- Android Design Support Library使用详解
Android Design Support Library使用详解 Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的And ...
随机推荐
- 【转载】set_input_delay和set_output_delay的选项-max和-min的讨论
转自:http://www.cnblogs.com/freshair_cnblog/archive/2012/09/12/2681060.html 一.存在背景分析 文档的说法是,set_input_ ...
- 一、IRIG-B 概念
参考:http://baike.baidu.com/view/3601618.htm http://wenku.baidu.com/view/7956cd29bd64783e09122bf1.html ...
- 四、VMware Tools 安装 与 问题
解决VMware Tools无法安装的问题 虚拟机上装win2kgho版的系统,安装VMware Tools时,遇到“VMware Tools installation cannot be start ...
- java字符串替换函数高效实现
public static String removeStr(String src, String str) { if (src == null || str == null) return src; ...
- ArtJS(原创)
<script> /* 方法目录: [IE7 8 不支持trim()方法的弥补] [ 终止冒泡] [数字千分位] [js运算的替代方法(js3.3/1.1不等于3浮点计算有bug)] [日 ...
- 【扩展】Canvas绘制列表的尝试
传送:http://www.alloyteam.com/2015/10/canvas-attempts-to-draw-list/ 来自:on 2015年10月30日 by TAT.Cson view ...
- 【HDOJ】【3530】Subsequence
DP/单调队列优化 题解:http://www.cnblogs.com/yymore/archive/2011/06/22/2087553.html 引用: 首先我们要明确几件事情 1.假设我们现在知 ...
- Matlab绘制透明平面(二元函数)
一.需求来源 对空间结构聚类,恰好是圆台,找到了上下底面的方程,所以画图. 二.需求解决 2.1 绘制平面 x = linspace(0,5,100); y = linspace(0,4,100); ...
- Codeforces 343D Water Tree 分类: Brush Mode 2014-10-05 14:38 98人阅读 评论(0) 收藏
Mad scientist Mike has constructed a rooted tree, which consists of n vertices. Each vertex is a res ...
- 【bzoj1009】[HNOI2008]GT考试
1009: [HNOI2008]GT考试 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3018 Solved: 1856[Submit][Statu ...