微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MANIFEST.XML文件ACTIVITY的TASK相关属性 ALWAYSRETAINTASKSTATE作用

今天碰到一个问题,打开android程序,进入其它页面(loginActivity->MenuActivity)后按Home键回到主页面,过段时间后再进入刚才打开的程序,出现的页面是loginActivity,而我想要的是出现MenuActivity。查阅相关资料,再根Activity(loginActivity)添加android:alwaysRetainTaskState="ture"就可以了。

在中定义了几个常见的task相关属性,它们分别代表了task内部不同的行为特征。
1.android:allowTaskreparenting
这个属性用来标记一个Activity实例在当前应用退居后台后,是否能从启动它的那个task移动到有共同affinity的task,“true”表示可以移动,“false”表示它必须呆在当前应用的task中,认值为false。如果一个这个Activity的元素没有设定此属性,设定在上的此属性会对此Activity起作用。例如在一个应用中要查看一个web页面,在启动系统浏览器Activity后,这个Activity实例和当前应用处于同一个task,当我们的应用退居后台之后用户再次从主选单中启动应用,此时这个Activity实例将会重新宿主到browser应用的task内,在我们的应用中将不会再看到这个Activity实例,而如果此时启动browser应用,就会发现,第一个界面就是我们刚才打开的web页面,证明了这个Activity实例确实是宿主到了browser应用的task内。
2.android:alwaysRetainTaskState 这个属性用来标记应用的task是否保持原来的状态,“true”表示总是保持,“false”表示不能够保证,认为“false”。此属性只对task的根Activity起作用,其他的Activity都会被忽略。
认情况下,如果一个应用在后台呆的太久例如30分钟,用户从主选单再次选择该应用时,系统就会对该应用的task进行清理,除了根Activity,其他Activity都会被清除出栈,但是如果在根Activity中设置了此属性之后,用户再次启动应用时,仍然可以看到上一次操作的界面。
这个属性对于一些应用非常有用,例如browser应用程序,有很多状态,比如打开很多的tab,用户不想丢失这些状态,使用这个属性就极为恰当。
3.android:clearTaskOnLaunch 这个属性用来标记是否从task清除除根Activity之外的所有的Activity,“true”表示清除,“false”表示不清除,认为“false”。同样,这个属性也只对根Activity起作用,其他的Activity都会被忽略。
如果设置了这个属性为“true”,每次用户重新启动这个应用时,都只会看到根Activity,task中的其他Activity都会被清除出栈。如果我们的应用中引用到了其他应用的Activity,这些Activity设置了allowTaskreparenting属性为“true”,则它们会被重新宿主到有共同affinity的task中。
4.android:finishOnTaskLaunch 这个属性和android:allowreparenting属性相似,不同之处在于allowreparenting属性是重新宿主到有共同affinity的task中,而finishOnTaskLaunch属性是销毁实例。如果这个属性和android:allowreparenting都设定为“true”,则这个属性好些。

原文地址:https://www.jb51.cc/xml/298329.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。