最近收到医生的反馈,从系统相册分享到我们的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