需求起因
??本來是在應(yīng)用內(nèi)一行跳轉(zhuǎn)到其他應(yīng)用的代碼處做了一些判斷操作,結(jié)果臨時(shí)接到新需求立帖,需要在其他應(yīng)用結(jié)束后跳回到本應(yīng)用時(shí)進(jìn)行之前的判斷操作州藕。再加上平時(shí)也不太使用到startActivityForResult()
這個(gè)方法毫缆,一時(shí)間不知道用什么東西做重斑。
??尋求了一下大佬幫助時(shí),也想起來了這個(gè)startActivityForResult()
方法值依,大佬還給我說了另一個(gè)思路ActivityLifecycleCallbacks
,但是另一個(gè)思路好像行不通圃泡,然后繼續(xù)搞startActivityForResult()
。(ActivityLifecycleCallbacks
雖然沒用到愿险,但是也沒太搞懂颇蜡,具體使用方法得空了研究一下再寫一篇)
使用中遇到的問題
??1.在Fragment中使用getActivity().startActivityForResult()
,其回調(diào)方法onActivityResult()
沒有被調(diào)用。
解決:在Fragment中使用startActivityForResult()時(shí)辆亏,直接調(diào)用即可风秤,不需要通過上下文來調(diào)用這個(gè)方法。
??2.因?yàn)槲疫@里遇到的需求是跳轉(zhuǎn)到第三方的app扮叨,然后在解決上面那個(gè)問題之后進(jìn)行回調(diào)的測試時(shí)發(fā)現(xiàn)缤弦,onActivityResult()
方法在跳轉(zhuǎn)時(shí)就已經(jīng)被調(diào)用,并不能達(dá)到我所想象的在目標(biāo)App結(jié)束是再進(jìn)行回調(diào)彻磁。
解決思路:這個(gè)現(xiàn)象在官方文檔中得到了解答...
翻譯一下:
請注意碍沐,此方法只應(yīng)與定義為返回結(jié)果的Intent協(xié)議一起使用。
在其他協(xié)議(例如Intent.ACTION_MAIN或Intent.ACTION_VIEW)中衷蜓,您可能無法獲得預(yù)期的結(jié)果累提。
例如,如果您要啟動(dòng)的活動(dòng)使用Intent.FLAG_ACTIVITY_NEW_TASK磁浇,
則它將不會在您的任務(wù)中運(yùn)行斋陪,因此您將立即收到取消結(jié)果。
官方文檔里提到了在其他協(xié)議中可能無法獲得預(yù)期的結(jié)果置吓。因?yàn)樵谖业男枨笾形扌椋姨D(zhuǎn)過去的目標(biāo)app的action是未知的,所以在這里暫時(shí)也放棄了這個(gè)思路衍锚。而且在解決問題的過程中還在其他博客里發(fā)現(xiàn)了目前我還沒有遇到的坑友题,今后遇到了再進(jìn)行更新。
最后构拳,這個(gè)需求是通過設(shè)置標(biāo)志位來判斷暫時(shí)解決咆爽,如果有對于onActivityResult
立即執(zhí)行的解決思路會更新博客,如果有哪位大佬有思路也可以幫助一下~