/ 技术

android:clearTaskOnLaunch的用法

关于android:clearTaskOnLaunch,网上的资料很少,唯一有几个资料,还说得很含糊,看着让人摸不着头脑,今天硬着头皮看了下英文文档,再结合自己的尝试,终于是稍微理解了它的用处。

默认情况下,android:clearTaskOnLaunch的值是false

此时,比如你的应用里有N个Activity,其中有个是设置页面,你从主页面进入到设置页面设置了一些东西之后,突然,按了下Home键,回到了Android的Home,这时候你做了些别的事情,然后你再次点击你的应用程序图标进入你的应用程序的时候,依旧是回到设置页面,继续先前的工作,这也是大多数应用的情况。

但是,如果你把android:clearTaskOnLaunch的值设为true呢?顾名思义,它就在启动的时候把Task给清空了,就是你再次点击应用程序图标进入你的应用程序的时候是回到应用程序的第一个页面,而不会回到先前的设置页面。也就是说不保存先前的设置状态。

至于,什么情况下要这么用,我还没想到,像谷歌的Zxing项目,也就是Android上的“条码扫描器”,它就是这样的,不管你什么时候重新进入该应用,它显示的都是扫描的界面。

不过呢,我也发现了个意外情况,就是即使你把android:clearTaskOnLaunch的值设为了true,但是在Home界面长按Home键,可以调出一个你最近进行的任务,从那个里面点击你的应用是可以回到先前保留的状态的,也就是无视android:clearTaskOnLaunch了,至于为什么,目前还没搞明白,有兴趣的可以去官方查看一下文档,我没有仔细去看。

关于android:clearTaskOnLaunch的官方文档地址:

http://developer.android.com/intl/zh-CN/guide/topics/manifest/activity-element.html#clear

另外,今天更新了下ADT 20,感觉还不错,Windows下模拟器的程序图标变了,比以前可爱了,呵呵。以前好像是没图标还是怎么地,完全没印象。这个图标倒还是让人印象深刻。

2012-7-2补充:

前几天搞得焦头烂额,我下了一个开源的项目,在里面把所有的android:clearTaskOnLaunch全部删除了,可结果还是重新进入的时候从第一个Activity开始,我就纳闷了,纠结了,百思不得其解,以为是应用程序更新的时候,有些地方没有完全更新,然后卸载了,重新安装调试,还是这样。没办法,认真检查所有代码,结果发现了这么个东西:intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);它在启动每个Activity的时候加了个Flag,Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET,也达到了那样的效果,删掉,然后就是一般的效果了,也就是不管什么时候重新进入应用,进入的是先前停留的地方。嗯~搞定!

by HADB of HAOest