activity launchmode


1.standard:

每次都是新的activity对象。


2.singletop:

栈顶单例。

特征:如果栈顶有此activity实例,当用startActivity调用此activity时,会复用这个activity,并调用onNewIntent() 刷新intent数据。

应用场景:notification启动的activity。

例子:网易新闻的具体网页所在的activity,

操作:打开网易新闻,打开某个具体新闻页,当有新的新闻出现在notification中时,点击notification,这时会刷掉之前所看的新闻,按back键,返回到新闻主页面。


3.singleTask:

栈单例。

特征:如果栈中有此activity实例,当用startActivity调用此activity时,会复用这个activity,通过clear掉此activity之上的所有activity的方式将此activity置于栈顶,并调用onNewIntent() 刷新intent数据。

应用场景:会被多个应用使用的app的main activity。

例子: 浏览器

操作:打开浏览器,输入某一网址,然后打开设置界面,按home键切出应用。点击微信,点击某一个网页消息进入,点击菜单,选使用浏览器打开。选择刚才的浏览器点击打开,此时会显示新的网页内容,点击back键会退出浏览器。相同的操作,用qq操作,结果一样。


4.singleInstance:

系统单例。

特征:如果栈中有此activity实例,当用startActivity调用此activity时,会复用这个activity,并调用onNewIntent() 刷新intent数据。

应用场景:和任何activity都没有逻辑关系(包括它所在的app)的activity

例子:闹钟

操作:打开闹钟设置界面,按home键进入微信,此时闹钟响了,进入闹钟提示界面,按返回键,回到微信界面。闹钟提示界面和任何app都没有逻辑关联,包括它自己所在的app。


2,3,4 复用时会调用onnewintent()


application, task, activity 的关系?

task是任务的概念 本质是个栈 一个task任务对应一个acivity集合;通过配置activity的android:taskAffinity来控制。

一个task中可以有多个应用的activity。

application是应用的概念,一个application可以有多个task任务(多个栈),默认的application里的activity都在一个栈中。


多任务控制?

android:allowTaskReparenting

是否允许此activity,回到原来的task栈中,认祖归宗,默认false,保留在启动task中。仅限于standard”和“singleTop”模式。

android:alwaysRetainTaskState

是否保持task状态,默认false,清除root activity 以外的activity。 只适用于根activity。如浏览器mainActivity设置。

android:clearTaskOnLaunch

启动时是否清除task,默认false。只适用于根activity。不想保存task状态。

android:finishOnTaskLaunch

这个属性和android:allowReparenting属性相似,不同之处在于allowReparenting属性是重新宿主到有共同affinity的task中,而finishOnTaskLaunch属性是销毁实例。

android:configChanges

在Activity中添加了 android:configChanges属性,目的是当所指定属性(Configuration Changes)发生改变时,通知程序调用 onConfigurationChanged()函数。


TaskAffinity:activity所在task栈的标记。是否属于某一逻辑关系task里。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值