需求起因
??本來是在應用內一行跳轉到其他應用的代碼處做了一些判斷操作,結果臨時接到新需求,需要在其他應用結束后跳回到本應用時進行之前的判斷操作。再加上平時也不太使用到startActivityForResult()
這個方法,一時間不知道用什么東西做。
??尋求了一下大佬幫助時,也想起來了這個startActivityForResult()
方法,大佬還給我說了另一個思路ActivityLifecycleCallbacks
,但是另一個思路好像行不通,然后繼續(xù)搞startActivityForResult()
。(ActivityLifecycleCallbacks
雖然沒用到,但是也沒太搞懂,具體使用方法得空了研究一下再寫一篇)
使用中遇到的問題
??1.在Fragment中使用getActivity().startActivityForResult()
,其回調方法onActivityResult()
沒有被調用。
解決:在Fragment中使用startActivityForResult()時,直接調用即可,不需要通過上下文來調用這個方法。
??2.因為我這里遇到的需求是跳轉到第三方的app,然后在解決上面那個問題之后進行回調的測試時發(fā)現(xiàn),onActivityResult()
方法在跳轉時就已經(jīng)被調用,并不能達到我所想象的在目標App結束是再進行回調。
解決思路:這個現(xiàn)象在官方文檔中得到了解答...
翻譯一下:
請注意,此方法只應與定義為返回結果的Intent協(xié)議一起使用。
在其他協(xié)議(例如Intent.ACTION_MAIN或Intent.ACTION_VIEW)中,您可能無法獲得預期的結果。
例如,如果您要啟動的活動使用Intent.FLAG_ACTIVITY_NEW_TASK,
則它將不會在您的任務中運行,因此您將立即收到取消結果。
官方文檔里提到了在其他協(xié)議中可能無法獲得預期的結果。因為在我的需求中,我跳轉過去的目標app的action是未知的,所以在這里暫時也放棄了這個思路。而且在解決問題的過程中還在其他博客里發(fā)現(xiàn)了目前我還沒有遇到的坑,今后遇到了再進行更新。
最后,這個需求是通過設置標志位來判斷暫時解決,如果有對于onActivityResult
立即執(zhí)行的解決思路會更新博客,如果有哪位大佬有思路也可以幫助一下~