天天看點

intent傳值更新問題

原文:http://phenix.blogbus.com/logs/220656659.html

在做android推送的功能時,發現一個基礎問題.activity的啟動模式是singletask.activity通過intent傳遞資料的時候,如果activity未啟動,那麼在這個剛啟動的activity裡通過getintent()會擷取到這個intent的資料.如果要啟動的activity是已經存在的,這時候通過getinten()方法擷取到的intent是已啟動的activity的原始intent.換句話說intent的資料沒有更新.這樣在已啟動的activity裡拿到的intent的資料是舊資料.如果要每次擷取intent傳來的新資料就需要在onnewintent(intent

intent)方法裡調用setintent(intent)設定這個傳來的最新的intent.

如果activity的啟動模式是standard,那麼每次都重新建立一個新的activity.這樣intent也是最新的.就不用通過setintent來更新這個intent.

另外發現一個問題是pendingintent在啟動activity的時候需要将構造裡的第4個參數設定為pendingintent.flag_update_current.否則這個pendingintent如果存在也不會更新.那麼傳過去的資料仍然是舊資料.

繼續閱讀