一、android四种启动模式的简介

四种启动模式包括standard、singleTask、singleTop、singleInstance
如下图所示,在AndroidManifest.xml文件中配置launchMode
Android四种启动模式及其注意事项_第1张图片


二、standard模式详解

普通情况下创建的Activity默认启动模式为standard,即并不用专门去写android:launchMode=”standard”
这里写图片描述

2.1 生命周期的方法执行顺序

创建一个新的Activity
①首次打开时,生命周期方法顺序执行onCreate()、onStart()、onResume()
这里写图片描述
②当此Activity不可见时,如直接按HOME键回到桌面,或者跳转下一个页面(没有进行finish),执行onPause()、onStop()
这里写图片描述
③当从不可见又回到可见的状态,如按了HOME键以后再打开此应用,或者之前跳转到下一个页面又返回了,这时执行onRestart()、onStart()、onResume()
这里写图片描述
④从当前Activity可见状态按返回键或用代码执行了finish()方法,会执行onPause()、onStop()、onDestroy()
这里写图片描述

2.2 多个standard模式的Activity叠加原理

Android四种启动模式及其注意事项_第2张图片


三、singleTop详解

栈顶复用问题。

假设有Activity 1、Activity3,Activity1的启动模式设为singleTop,当从1跳到3的时候,其行为与 standard 模式一样。若1处于栈顶,且Activity1一直跳转到Activity1,此时不创建新的实例而使用当前的旧的实例,解决了栈顶多个重复的Activity的问题。
Android四种启动模式及其注意事项_第3张图片

此时有个传值问题,上图中的下面的那个任务栈中,假设3向1跳转时传了一个值 string=haha,则1中get到的string的值就是haha。若1向1跳转的时候改变了这个值,string=hehe ,那么1跳到1后get到的string值是什么呢???当然还是haha了。因为一直用的都是旧实例中的值。

那么有没有办法让得到的string的值为hehe呢?在1的启动模式还是singleTop的情况下,办法还是有的。这里要使用到onNewIntent方法,如下图
Android四种启动模式及其注意事项_第4张图片
从StandardActivity跳转到StandardActivity方法执行顺序为
这里写图片描述


四、singleTask详解

一个任务栈中共享一个Activity。

Android四种启动模式及其注意事项_第5张图片

当然,这里存在与singleTop同样的Activity之间传值的问题。解决方案和上面一样,也用onNewIntent()方法,并setIntent(intent) 。

这里跳转到启动模式为singleTask的Activity的执行顺序为:
这里写图片描述

这里参考链接onNewIntent的调用时机


五、singleInstance详解

一个Activity占用一个任务栈。

Android四种启动模式及其注意事项_第6张图片


六、参考链接

(http://www.360doc.com/content/14/0721/19/15193102_396109773.shtml)
(http://blog.csdn.net/tiancizhenai/article/details/7037787)
(http://www.cnblogs.com/zenfly/archive/2012/02/10/2345196.html)

更多相关文章

  1. Activity中的四种启动模式和onNewIntent()
  2. Android使用HttpClient下载图片
  3. Android Day03-SQLite数据库操作及ListView详解
  4. android中xml设置Animation动画效果详解
  5. 安卓中选择系统图库的图片及调用相机的源码(原创)
  6. Android布局详解之二:LinearLayout
  7. Android绘图之Paint的使用方法详解
  8. 自定义ViewPager实现图片自动轮播无限循环
  9. android启动之init进程详解

随机推荐

  1. Android事件总线(四)源码解析otto
  2. Android 指定Dex分包的Gradle插件
  3. android 解决依赖冲突
  4. Android初探:GeoQuiz学习
  5. Android魔法系列大全(不定时更新)
  6. Android studio 开发实战笔记----(一)开发
  7. Android整体印象
  8. Android GIF 编解码
  9. 移动应用A/B测试前需注意的五件事
  10. 如何自学安卓