需求起因
本来是在应用内一行跳转到其他应用的代码处做了一些判断操作,结果临时接到新需求,需要在其他应用结束后跳回到本应用时进行之前的判断操作。再加上平时也不太使用到startActivityForResult()
这个方法,一时间不知道用什么东西做。
寻求了一下大佬帮助时,也想起来了这个startActivityForResult()
方法,大佬还给我说了另一个思路ActivityLifecycleCallbacks
,但是另一个思路好像行不通,然后继续搞startActivityForResult()
。(ActivityLifecycleCallbacks
虽然没用到,但是也没太搞懂,具体使用方法得空了研究一下再写一篇)
使用中遇到的问题
1.在Fragment中使用getActivity().startActivityForResult()
,其回调方法onActivityResult()
没有被调用。
解决:在Fragment中使用startActivityForResult()时,直接调用即可,不需要通过上下文来调用这个方法。
2.因为我这里遇到的需求是跳转到第三方的app,然后在解决上面那个问题之后进行回调的测试时发现,onActivityResult()
方法在跳转时就已经被调用,并不能达到我所想象的在目标App结束是再进行回调。
解决思路:这个现象在官方文档中得到了解答...
翻译一下:
请注意,此方法只应与定义为返回结果的Intent协议一起使用。
在其他协议(例如Intent.ACTION_MAIN或Intent.ACTION_VIEW)中,您可能无法获得预期的结果。
例如,如果您要启动的活动使用Intent.FLAG_ACTIVITY_NEW_TASK,
则它将不会在您的任务中运行,因此您将立即收到取消结果。
官方文档里提到了在其他协议中可能无法获得预期的结果。因为在我的需求中,我跳转过去的目标app的action是未知的,所以在这里暂时也放弃了这个思路。而且在解决问题的过程中还在其他博客里发现了目前我还没有遇到的坑,今后遇到了再进行更新。
最后,这个需求是通过设置标志位来判断暂时解决,如果有对于onActivityResult
立即执行的解决思路会更新博客,如果有哪位大佬有思路也可以帮助一下~
网友评论