Activity的加载模式解读
Activity的加载模式解读
abcijkxyz 发表于1年前
Activity的加载模式解读
  • 发表于 1年前
  • 阅读 0
  • 收藏 0
  • 点赞 0
  • 评论 0
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而已。
共有 人打赏支持
粉丝 58
博文 6068
码字总数 1876
×
abcijkxyz
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: