2016-04-07 76 views
-2

我正試圖找出兩個android活動之間切換的最佳做法。關於SO的幾個問題提到了這一點,但似乎沒有一個涉及不同方法的記憶或速度影響。到目前爲止,我已經遇到這些方法(使用活動名稱a和b的清晰度):在兩個android活動之間來回切換的最佳做法

  1. 在活動中,當用戶需要移動到b活動,創建一個新的意圖指向b活動,反之亦然。

2.在活動a中使用startActivityForResult,指向活動b,活動b完成後返回結果。

3.使用Intent標誌ACTIVITY_CLEAR_TOP從活動b返回到活動a時,使用指向活動a的新Intent。

任何人都可以澄清上述方法/他們知道的任何其他方法的內存和速度影響,並建議使用最好的方法?

回答

2

1.在活動a中,當用戶需要移動到活動b時,創建一個指向活動b的新Intent,反之亦然。

您將創建將被添加到堆棧的活動的多個實例。因此,根據您的應用的性質,我建議您不要這樣做。相反,您可以使用片段並在片段管理器的.replace方法與片段管理器的.replace方法之間切換,從而將片段的兩個實例都保存在活動中的變量中。

2.在活動a中使用startActivityForResult,指向活動b,活動b完成後返回結果。

如果您只希望您的活動B執行某些操作並將某些內容發送回活動A,那麼您可以執行此操作,並且每個實例總是有一個實例,這是一個很好的方法。

3.使用Intent標誌ACTIVITY_CLEAR_TOP從活動b返回到活動a時,使用指向活動a的新Intent。

這將是一個很好的解決方案,爲您的第一個解決方案。

現在處理這個問題的最好方法是使用碎片,這是我使用最多的。

如果您仍然選擇使用Activities,則可以在清單文件中設置以下標籤。

android:launchMode=["singleTask" | "singleInstance"] 

兩者都以相同的方式工作,每個實例只有一個,這樣您就不必在意圖中設置標誌。

希望它有幫助!