请选择 进入手机版 | 继续访问电脑版
阳光沙滩博客现金打赏设置邀请好友最新视频下载
+发表新主题
黄永康 发布于2018-6-8 21:24 249 次浏览 0 位用户参与讨论
跳转到指定楼层
本帖的地址:https://bbs.sunofbeaches.com/thread-6319-1-1.html
版权声明:本文为作者所有,未经作者允许不得转载--->温馨提示:请加上原文地址!
Android开发日常-使用FLAG_ACTIVITY_NEW_TASK来startActivityForResult直接返回0

这个标题真长呢!

是怎么回事呢?第三方应用调用我们的应用,使用了FLAG_ACTIVITY_NEW_TASK这个flag,但是呢,一打开,马上就返回了0的结果!



验证正常情况

正常情况下:我们注释了FLAG_ACTIVITY_NEW_TASK这个flag

2018-06-08_174115.png

界面就一个按钮,没有什么别的代码,所以界面就不上代码了。

接着是第二个界面的代码,我们在销毁的时候,设置返回值。

2018-06-08_211922.png

我们把程序跑起来:

taskpopout3.gif
以上,是我们正常地获取到了Activity返回的结果

假设加上了FLAG_ACTIVITY_NEW_TASK这个以后,会有什么样的结果呢?


添加了FLAG_ACTIVITY_NEW_TASK这个flag


上面的代码,我们只改一个地方,那就是取消注释:


2018-06-08_212144.png

接着,我们把程序跑起来,看结果:
taskpopout2.gif

从上面的gif图可以看出,我们当我们一打开第二个Activity的时候,马上就返回了0,还没等我们返回UI就返回结果了。这是什么呢?


原因

我们从官方文档里可以看到以下的内容:
2018-06-08_212351.png
也就是这个flag的相关说明,期中有一句话是这么说的:
This flag can not be used when the caller is requesting a result from the activity being launched.

这句话的大概意思是:当调用者需要一个来自被加载Activity的返回值时,不可以使用这个flag(FLAG_ACTIVITY_NEW_TASK)

总结

我写这篇文章,只是告诉大家有这么一个坑,如果你打开另外一个Activity的话,你不可以适用FLAG_ACTIVITY_NEW_TASK的flag来打开,否则是拿不到返回值的,这个Activity必须要和你跑在同一个栈里。











转载请说明出处,本文地址:https://bbs.sunofbeaches.com/thread-6319-1-1.html

帖子的最近访客

今天签到的人不是很多呢。

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ| 《网站免责声明》|小黑屋| 阳光沙滩(sunofbeaches.com)  

Copyright © 2001-2013 Comsenz Inc.   All Rights Reserved.

Powered by Discuz! X3.2( 粤ICP备14093694号 )

快速
回复
返回
列表
返回
顶部