背景如何最好地重新創建標記/折線:當手機被旋轉(方向改變)
- 開發一個原生Android應用程序使用Android的谷歌地圖V2,採用
android.support.v4.app.FragmentActivity
。在Android v2.2上運行。
目的:
- 在地圖上保留 「繪製」 標記/折線手機方向改變之前。
問題(S):
我可以標記/折線「保存」作爲包的一部分,只是必須使用適當的節省他們在
onSaveInstanceState
他們重新顯示savedInstance.put..
方法,然後使用適當的savedInstanceState.get..
方法在onCreate
中「恢復」它們。在審查標記
getID()
說明我很困惑,當谷歌文檔Marker.getId()
method狀態如下:地圖時從包恢復,標誌將原本地圖上也恢復。但是,這些標記將由不同的標記對象表示。標記的ID可用於在恢復之後檢索標記對象的新實例。
谷歌文檔(上面的粗體文本)使得它聽起來像標記只是自動恢復而不必採取任何行動。那不是我的經歷......也許我錯誤地解釋了陳述內容。或者,也許你必須明確地將地圖保存在Bundle中?有人可以澄清這是什麼意思?
假設我將必須明確地通過適當的
savedInstance.put...
方法的標記和折線保存到束應該我保存整個標記或應保存的標記ID和使用標記ID來檢索標記信息重新顯示標記?我找不到能夠保存整個標記的put
方法。我注意到谷歌地圖API的Android V2的
MapFragment
section其規定如下:從GoogleMap的獲得的任何物體與視圖關聯。不要堅持物體(例如標記)超出視野的生命。否則會導致內存泄漏,因爲視圖無法釋放。
此聲明使我相信我不應該嘗試保存標記本身,而是嘗試保存標記ID,然後根據與標記ID關聯的標記對象重新生成標記。對於PolyLines也是如此。我的假設是否正確?
另外,我是否應該避免將標記作爲類變量?我擔心的是,如果Marker是一個類變量,並且Activity Map片段被放置在後端堆棧上,這可能會導致內存泄漏,因爲它將有效地「保留到對象」,如上述文檔中所述。這是我應該關心的嗎?
問候。
謝謝梅西......只是澄清一下可以做什麼和不可以做什麼是非常有幫助的。希望有人針對Google文檔提交了一個問題。 – user2101068
作爲背景......我只有一個標記,我在這裏擔心,兩條多段線連接到這個標記。標記代表用戶在屏幕上點擊的位置(tapMarker)。第一條多段線將用戶當前的GPS連接連接到tapMarker,第二條多段線將點擊標記連接到指定的LatLng。指定的LatLng的數據將存儲在數據庫中。 – user2101068
在這種情況下,您只需在'onSaveInstanceState'中發送'LatLng'。這是有道理的,因爲它是用戶活動(就像編輯文本字段一樣)。可選擇兩個'ArrayList'重新創建折線。我認爲我的答案會更有用;) –