2013-03-25 55 views
1

我正在構建一個包含許多活動的Android GPS應用程序。我的主屏幕是Google地圖屏幕,它可以從遠程數據庫中加載所有最近的位置。我還有其他可以從菜單按鈕中選擇的活動,例如列表模式,添加新位置,登錄等如何從菜單啓動時恢復活動?

當我按列表模式(或任何其他活動),然後啓動該活動,並按下我的手機上的物理後退按鈕,我能夠回去到我的主屏幕,這是我的地圖活動,沒有它重新啓動和重新加載所有標記,就像它在應用程序啓動時所做的那樣。然而,我的問題是,當我處於列表模式,然後從菜單選項按下地圖模式時,它會重新啓動地圖活動,以便它再次檢索位置。我希望能夠按下這個地圖模式按鈕,然後像我按下物理後退按鈕時一樣恢復。我怎樣才能做到這一點?

+0

嘗試從標記FLAG_ACTIVITY_NEW_TASK開始。讓我知道它是否有效,我感興趣。 – 2013-03-25 18:05:36

+0

我試過Intent i = new Intent(this,MapActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);不起作用。 – 2013-03-25 18:45:09

+0

請更具體。什麼是地圖活動?它的子類是什麼類?它是否包含onPause()和onResume(),並且你編碼了它們,以便類保存並恢復其狀態?另外,什麼Activity正在控制菜單本身? – 2013-03-25 18:02:06

回答

0

我會看看這個:Managing the Activity Lifecycle。我有一個類似的應用程序,我需要「緩存」地圖數據,這樣我就不得不重新加載它。我用這個作爲我的參考。

1

我相信你正在創建一個新的Map Activity並將這個新的實例放在活動棧的頂部。

所以,你的活動堆棧看起來是這樣的:

  • 地圖活動
  • 列表活動
  • 地圖活動

如果我是正確的,然後按從這個'新'地圖活動回來將回到列表活動。再次按下會將您帶到原來的地圖活動(您正在查找的地圖活動)

因此,當您在您的列表活動中時,您只需簡單地完成()是一個

看看這個文件對意圖國旗進一步閱讀:。 Intent Flags

+0

如何在不啓動Map Acitivty的情況下進入? – 2013-03-25 19:15:32

+1

據我所知,您從地圖活動開始列表活動。所以,如果你關閉你的列表活動 - 通過調用finish(),你將被帶回你的原始地圖活動。 – villoren 2013-03-25 19:31:36

+0

噢,我現在就給它一個鏡頭。 – 2013-03-25 19:33:29

0

在您的清單申報地圖活性singleInstance的啓動模式,然後我想你會確定從http://developer.android.com/reference/android/R.styleable.html#AndroidManifestActivity_launchMode

只允許此ac的一個實例活力永遠在運行。這項活動得到一個獨一無二的任務,只有自己在其中運行;如果它再次以相同的Intent再次啓動,那麼該任務將被提前並調用其Activity.onNewIntent()方法。如果此活動嘗試啓動新活動,則該新活動將在單獨的任務中啓動。有關任務的更多詳細信息,請參閱任務和返回堆棧文檔。

+0

我可以爲所有活動做這個嗎? – 2013-03-26 00:24:13

+0

這是什麼意思?澄清一點點。 – 2013-03-26 00:27:54