您的位置:首页 > 其它

Activity的加载模式解读

2016-05-26 22:02 281 查看
Android是用launchMode属性来定义activity的加载模式的,如在AndroidManifest里面写:
<activity android:name=".Activity2" android:launchMode="singleInstance">

加载模式一共四种,下面分别介绍:

standard:就是intent将发送给新的实例,所以每次跳转都会生成新的Activity。

singleTop:也是发送给新的实例,但不同于standard的一点是,请求的Activity正好位于栈顶时,不会构造新的实例。可以这样记:top single---如果在栈顶,就使用这一个。

singleTask:和后面的singleInstance都只创建一个实例,当intent到来,系统会检查栈里面是否已经有该Activity的实例,如果有直接将intent发送给它,并使此Activity实例之上的其他Activity实例统统出栈,没有的话才会新建。可以这样记:task single---如果栈里面有,就使用这一个。

需要说明的是:如果栈里面已经有Activity的实例了,当intent到来时,会在onStart()之前调用onNewIntent()方法。

Android中有一个属性android:taskAffinity,是用来给Application或Activity设置“任务共用性”的,默认是包名。如果为一个singleTask模式的Activity设置了该属性,如:android:taskAffinity="com.example.wdong.interviewtwo.aa"那么这个Activity跟该应用的其他Activity就不在同一个task(栈)了,可以使用this.getTaskId()打印出来看一下就清楚了。

singleInstance:将Activity放入一个栈中,并且这个栈中有且只有这一个Activity,不同应用的intent都由这个Activity接收和展示,实际就是不同应用共享同一个Activity,其实这种情况该Activity就相当于一个独立的应用了,不过这个应用仅有这一个Activity而已。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: