我正在使用GCM創建聊天應用程序。使用廣播接收器從pendingintent加載關閉的應用程序
該應用程序在MainActivity啓動,用戶輸入用戶名並註冊用戶,在Web服務器和SharedPreferences中保存gcm信息(名稱&設備ID),然後加載MainActivity中的用戶列表。我點擊列表中的用戶,使用額外功能(myname,他的名字,他的設備ID)打開ChatActivity。我收到了他的消息,我收到一個有待處理意圖的通知,並且廣播接收器更新聊天時間線,如果我點擊通知,它將以更新後的聊天時間線打開ChatActivity,一切正常。
當應用程序關閉並且收到通知時會發生此問題。當我點擊通知時,我的應用程序會假設爲該特定用戶打開ChatActivity,並使用新消息填充聊天時間線。
正在發生的事情是,ChatActivity會加載,但是由於它已關閉,它沒有通過註冊,所以它不知道活動用戶是誰,也不會加載新消息。
解決此問題的最佳方法是什麼?
您說的有效,但是當我單擊通知並且窗口時間線已打開時,它將堆疊在頂部,如何解決?如果我收到信息並打開新窗口,額外消息會從後續消息中消失。 – 2015-02-11 01:42:55
重新打開ChatActivity的manifest.xml中爲android:launchMode =「singleTask」設置的同一活動窗口。這樣,活動的任何現有實例都將被重用,並置於頂層。希望這也能解決額外消失的問題。 – Theodorus 2015-02-11 08:06:57
您不能在這裏使用'singleTask'啓動模式,因爲'ChatActivity'不是根活動。一般來說,你不想使用這種啓動模式,這是非常特殊的情況。啓動模式「singleTop」應該做到這一點。您可能需要添加'Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP'到'Intent'以獲得你需要的行爲(取決於'ChatActivity'是否可以在其自身之上啓動其他活動) – 2015-02-11 18:37:31