2016-04-08 41 views
1

我有2個活動 - 「A」包含帶有會話列表的片段,「B」代表對話(顯示它的消息),在B中我還可以發送新消息。 我希望能夠每次在B中發送消息時更新A的對話列表,所以當我點擊android的後退按鈕時,A活動的視圖被更新。Android,操縱以前的活動

對於我來說,問題的核心是,當我單擊Android的後退按鈕時,我不會通過Intent啓動A,所以我不知道如何獲得此效果。

謝謝你的幫助!

+0

'我不是通過意圖啓動A'。如果A是一項活動,您必須以意向開始活動。它是你的應用程序的主要活動嗎? –

+4

在這種情況下,活動A將在顯示活動B時暫停。由於在任何給定時間只能顯示一個活動,因此在它們之間進行溝通是沒有意義的。你應該做的是在Activity B中更新數據源,並在Activity A的onResume()中刷新/重新加載數據。 –

+0

最好的解決方案是使用內容提供者 – Pooya

回答

1

當A位於backstack上時,不能保證A的實例甚至存在於內存中。如何從B處理A的問題的答案是而不是

做一些正確的方法:

  • 如果模型(會話列表)是ParcelableSerializable,您可以通過Intent活動之間傳遞。如果您從B開始搜索結果並從Intent返回到A的onActivityResult,您可以將其從B傳回A。
  • 使模型具有持久性,就像在數據庫或SharedPreferences文件中一樣。
  • 將該模型放在約束Service中。這將比每個活動從持久存儲中加載它快,但是您可能仍然需要使其持續存在,以便在Service關閉時不會丟失它。