码迷,mamicode.com
首页 > 其他好文 > 详细

Activity的四种启动模式详解

时间:2015-10-27 13:19:29      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

Activity的启动模式在清单文件AndroidManifest.xml中的Activity属性中进行设置:

如:<activity

    android:name=".MainActivity"
android:launchMode="standard"/>

Activity的启动模式一共四种:

1、standard 模式
  标准模式,如果不在清单文件中声明,系统会默认使用这种模式启动,大多情况下也都是使用这种模式启动。
特点是:每一次都会创建一个新的Activity,这个新的Activity总是放在栈顶; 由于都创建新的Activity,
比较耗资源。
2、singleTop 模式
  每当需要启动Activity时,系统首先会检查栈顶的Activity是否存在一样的Activity实例,如果存在,

则直接使用栈顶已存在的Activity,否则新建一个Activity。
3、singleTask 模式
  每当需要启动一个Activity时,系统会检查存放的栈中是否存在一样的Activity实例,如果存在,调用该实

例的newInstance()方法重用该Activity,并把他上面的Activity销毁掉,使其处于激活状态---栈顶,否则
就重新创建一个新的Activity实例。

4、singleInstance 模式
  每当需要启动一个Activity时,系统会检查栈中是否存在一样的Activity实例,如果存在,则会调用onNewIntent()
给它开一个单间,即重新开一个栈存放.这种模式只会创建一次,即只会调用一次onCreate()方法,除非Activity被销毁。
比较耗资源,并且使用该模式时会存在bug---调用startActivityForResult()时,会报错,我也不知道什么解决,最好
别用。


附:Activity与栈
1.栈的基本工作原理是先进后出,或者后进先出。
2.Activity是由栈来管理的,每创建一个Activity,都会往栈中叠加,就像往一个箱子(假设箱子大小与书本恰好相同)里存放书本,
先创建的放在栈底,最上面的是栈顶,只有栈顶的Activity是激活状态的。
3.Activity的启动模式,其实是对栈进行管理/操作。
















Activity的四种启动模式详解

标签:

原文地址:http://www.cnblogs.com/huaqing-wkc/p/4913850.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!