在android中,Activity的属性可以在Manifext中的application notes进行可视化设置,也可以在AndroidManifest.xml的代码中进行设置,还能够利用

Intent的标志进行设置。下面我就来介绍android的几种Managing Tasks属性。

1.taskAffinity
2.launchMode
3.allowTaskReparenting
4.clearTaskOnLaunch
5.alwaysRetainTaskState
6.finishOnTaskLaunch

一:android:taskAffinity

taskAffinity 属性就是确定activity的归属与哪个task(activity 栈),一般情况下,我们开启一个应用都会创建一个activity的task,这个应用所启动的所有

activity都会在这个task中度过自己的生命周期。但是为什么我们开启一个应用时activity会找到属于自己的task呢,它是根据什么来找的?默认情况下

如果一个没有显示设置自己的taskAffinity属性,那么在启动一个activity时,系统会其找到application中的affinity属性,如果application也没有显式设

置这个属性,那么系统会将affinity属性默认为该应用的包名。在这里我有个疑问:如果affinity属性中的task不存在会怎么办?在应用刚开始启动的时

候,这个属性中所标注的task肯定不存在,那么系统是怎样创建这个task的?

二:android:launchMode
launchMode 这个属性比较重要,既可以在application notes中进行设置又能够在Intent中进行设置 notes中的分为以下四类:
"standard"
"singleTop"
"singleTask"
"singleInstance"
Intent中可以设置的属性为:
FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_SINGLE_TOP
这些属性我就不细讲了,以后为专门写一篇文章来进行说明。

三:android:allowTakReprenting

这个属性默认为false。如果设置为true他的作用是,如果这个activity启动时,他会自动归属到taskAffinity属性中所设置的activity task,如果

taskAffinity属性名称中的task不存在,他会默认归属于默认task中去,但是如果一旦taskAffinity属性名称中的task被创建并且成为前台task,那么

这个activity又会默认归属到这个task中去。比如:你在某应用中浏览一个链接,使用浏览器打开这个链接会开启一个activity,如果这个属性设置

为true,那么他会归属到浏览器的任务中,当你将这个应用放到后台,然后重新打开浏览器你会发现这个网页还是会被显示。着就是他的作用。

四:android:clearTaskOnTouch

这个属性默认为false。如果设置为true时,打开A activity 然后右从A中启动B,然后按住home键将B放在后台,然后在home scream 中启动A,

按照平常习惯看到的应该还是B,但是这时看到的确是A。他的作用就是,当你离开了设置这个属性的activity,也就是这个activity进入了后台或

者死亡,当这个activity所处的task再次进入前台时,我会始终会看见这个task中的root activity。

五:android:alwaysRetainTaskState

这个属性默认为false。这个属性用来标记应用的task是否保持原来的状态,“true”表示总是保持,“false”表示不能够保证,默认为“false”。此属性

只对task的根Activity起作用,其他的Activity都会被忽略。 默认情况下,如果一个应用在后台呆的太久例如30分钟,用户从主选单再次选择该应用时

系统就会对该应用的task进行清理,除了根Activity,其他Activity都会被清除出栈,但是如果在根Activity中设置了此属性之后,用户再次启动应用时,

仍然可以看到上一次操作的界面。 这个属性对于一些应用非常有用,例如Browser应用程序,有很多状态,比如打开很多的tab,用户不想丢失这些

状态,使用这个属性就极为恰当。

六:android:finishOnTaskTouch

这个属性默认为false。他的作用就是,每当用户点击home screen 再次启动一个应用时(注意:chooses the task on the home screen),这个应用

中所有这个属性被设置为true的Activity都将被finish,包括root Activity。但是开启这个Activity时,然后将这个activity所在的task变成后台 task后,再次

此task将其变成前台task时这个activity就会被finish掉。

更多相关文章

  1. 如何在后台运行Linux命令?
  2. Android(安卓)后台线程弹对话框导致程序崩溃(is not valid; is y
  3. Android横竖屏切换Activity生命周期变化
  4. Android(安卓)SDK 中文 (56) —— ViewFlipper
  5. Android(安卓)自定义View(自定义控件)
  6. Android(安卓)Provider权限
  7. Android(安卓)studio cmake报错
  8. Android聊天软件开发(基于网易云IM即时通讯)——环境搭建(一)
  9. Android培训班(12)

随机推荐

  1. Yarn【label-based scheduling】实战总结
  2. Yarn【label-based scheduling】实战总结
  3. BAT大佬带你了解AB测试
  4. Vue3 系统入门与项目实战
  5. 端午搬砖:聊聊调度云服务
  6. 原创 | 后疫情时代下5G安全的风险防控及
  7. 原创 | 工业网络通讯数据分析之Wireshark
  8. 闲聊乐视
  9. Cosmos DB的5种事物一致性
  10. #Build 2017观察# 微软的战略升级