2011-11-18 70 views
0

我有一個MapActivity子類,我想保留堆棧,但我不能在同一個進程中保留MapActivity的多個實例。所以,我拿出2個方案來實現這一目標:MapActivity實例管理

  1. 傳遞MapActivity的狀態,它激發任何意圖一起,然後讓該得到交換活動到重建MapActivity通過發送重新創建活動的意圖。另外,將設置MapActivity,以便意圖一次只創建此活動的單個實例。這種方法存在缺陷,因爲此活動有多個退出路徑,所以需要對其進行更改以支持此操作。
  2. 用一個模擬活動替換MapActivity,該模擬活動可以在onResume()方法或其他方法中完成活動的重新創建,然後您切換到的活動可以保持幸福而不知道此問題。這種方法的問題是我不知道我應該如何去創建這個模擬活動,並且發起一個意圖來啓動我想要切換到的活動。

所以我的問題是,這是否有更好的方法來做到這一點,如果不是這樣,如果可能的話,我將如何去做選擇2?

編輯:做選項2的一種可能方法是使模擬活動成爲一個航點,爲您啓動目標活動onCreate()。但是必須注意,如果onCreate()因爲活動正在重建而被再次調用,那麼它不會再次啓動目標活動。這可以通過檢查savedInstanceStatenull來完成。

回答

0

你應該在清單文件中使用SingleInstance屬性,這將帶來較早啓動的實例到堆棧中

<activity android:launchMode="singleInstance"/> 
+0

是的,我在做這個規劃的頂部,但我想要做的是保持後退堆疊。所以如果A是地圖而B是另一個活動並且用戶導航A-> B-> A-> B-> A。我希望它向用戶顯示後退棧是ABABA。但是我想要實現這一點,而不需要實際擁有多個A實例。這是非常困難的部分。 – JPvdMerwe