背景如何最好地重新创建标记/折线:当手机被旋转(方向改变)
- 开发一个原生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'重新创建折线。我认为我的答案会更有用;) –