問(wèn)題:
??我們使用 intent 在兩個(gè) activity 之間帶值跳轉(zhuǎn)的時(shí)候,有時(shí)候會(huì)遇到,接收值的那個(gè) activity
收不到 intent 里的數(shù)據(jù)令漂。
解決方法說(shuō)明:
??檢查自己接收值的那個(gè)activity毫别,看一下啟動(dòng)模式,如果是 singleTask 或 singleInstance雾狈,可能和我遇到了一樣的情況,接著往下看應(yīng)該就能解決抵皱,如果不是善榛,請(qǐng) Ctrl+w,另行 google呻畸。移盆。
解決方法:
??當(dāng)啟動(dòng)模式為 singleTask 時(shí),activity 通過(guò) intent 傳遞數(shù)據(jù)的時(shí)候伤为,如果 activity 未啟動(dòng)咒循,那么在這個(gè)剛啟動(dòng)的 activity 里通過(guò) getIntent() 會(huì)獲取到這個(gè) intent 的數(shù)據(jù)。如果要啟動(dòng)的 activity 是已經(jīng)存在的绞愚,這時(shí)候通過(guò) getInten() 方法獲取到的 intent 是已啟動(dòng)的 activity 的原始 intent叙甸,也就是說(shuō) intent 的數(shù)據(jù)沒(méi)有更新,這樣在已啟動(dòng)的 activity 里拿到的 intent 的數(shù)據(jù)是舊數(shù)據(jù)位衩。
??如果要每次獲取 intent 傳來(lái)的新數(shù)據(jù)就需要在 onNewIntent(Intent intent) 方法里調(diào)用setIntent(intent)設(shè)置這個(gè)傳來(lái)的最新的 intent裆蒸。
??即在啟動(dòng)模式為 singleTask 的 activity 里加上以下代碼,然后通過(guò) getIntent() 就可以獲取到新傳遞過(guò)來(lái)的值了糖驴。
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}