Intent.FLAG_ACTIVITY_CLEAR_TOP 的使用注意

来源:互联网 发布:佳能手机打印软件 编辑:程序博客网 时间:2024/05/01 08:39

最近开发一个下载的应用,然后有很多层跳转关系,跳到最后进行下载,下载完毕之后弹出一个按钮,点击之后会将所有activity都结束掉。一开始用的方法是

Intent intent = new Intent(DownLoad.this,        NetworkUpdate.class);intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);intent.putExtra("exit", true);startActivity(intent);

然后在NetworkUpdate.class的oncreate中判断extra的exit属性,是true则finish自己。根据以往的经验设置了Intent.FLAG_ACTIVITY_CLEAR_TOP之后应该会将除了目标activity之上的所有activity全部结束才对,在下载小文件的时候上述功能也确实凑效了。但是问题来了。。当下载的文件特别大,耗时特别长的时候,上述动作执行会没效果!按钮点了又点没任何反应。。。
开始就想,跟下载文件耗时长不长有什么关系呢?后来发现了API文档:

 也就是说,想实现上述要求的话,首要条件就是要目标activity存在task中,但是因为下载耗时过长,可能在途中目标activity已经被安卓自己干掉了(猜测)。

最后更换了另一个实现方法。

Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK
直接这两个标志一起用就好了~连都不需要置啦。

0 0
原创粉丝点击