singleInstance 与 singleTask

最近收到医生的反馈,从系统相册分享到我们的app时没有任何提示,而实际上就是没有分享成功。

需求是分享成功之后要么回到系统相册,要么打开app首页,app首页的启动模式为singleTask。

针对这个问题,我看了一下代码,基本的操作流程就是启动app中的Activity,这里叫A,然后A通过 startActivityForResult 启动B,这里B就是选择分享对象的Activity,最后在onActivityResult中拿到分享对象,做分享操作。搞清楚流程之后,事情就好办了。

在onActivityResult方法中加了断点调试,发现当A启动B时,这个方法立即就会回调,并且收到一个RESULT_CANCEL的request_code。原因就是因为A的启动模式设置成 singleInstance,B的启动模式是standard,因为A和B在必然在两个不同task中,所以onActivitiyResult方法无法使用。

将A的启动模式变为singleTask是不是就可以了呢?,如果将A的启动模式设置为singleTask,可以在onActivityResult方法中拿到分享对象,并且完成分享功能,但是如果app处于后台时,分享成功之后选择留在系统相册,就会发现问题。选择留在系统相册但是打开的却是app的首页,这是为什么呢?因为A与首页在同一个Task中,A finish之后,该task中还有首页这个实例,所以会默认启动首页。那么这个问题怎么解决呢?

先说这个问题怎么发现的,感谢天天大神,本来以为把A的启动模式设为singleTask就OK了,天天大神精益求精的精神感动了我,并且帮我解决了。

解决办法就是在Manifest.xml文件中 对A 增加一行代码android:taskAffinity=“.xx”,就是给A设置一个单独的task。。。就这么简单

关于taskAffinity,请戳链接  http://blog.csdn.net/chenshijun0101/article/details/9409193

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值