当前位置: 首页 > 知识库问答 >
问题:

Android-谷歌地图API V2,避免内存泄漏

冯淳
2023-03-14

我在SupportMapFragmet上阅读了这篇文档,它说:

从GoogleMap获得的任何对象都与视图相关联。重要的是不要持有超出视图生命周期的对象(例如标记)。否则会导致内存泄漏,因为视图无法释放。

我对此有点困惑,因为没有办法修改标记,除非您持有它们的引用,就像这里的许多问题所说的那样(像这样和这样)......所以我错过了什么吗?

我目前正在使用哈希映射将我的标记与其他对象关联起来,我看不出如何避免它。这会泄漏内存吗?是否有建议的方法来编辑标记并避免内存泄漏?

共有2个答案

那铭
2023-03-14

按照上面的建议并在片段被销毁之前从地图中删除所有标记后,我仍然得到内存泄漏。我的解决方案最终是在片段被销毁之前在我的自定义TileOverlay上调用clearTileCache

谷梁波
2023-03-14

标记很可能有一个对地图的引用,就像绘图器持有对它们绑定的视图的内部引用一样。只要您持有标记,您可能也持有对地图的替代引用。

我不知道他们为什么不使用弱引用。但是,如果他们这样做了,他们就不会觉得有必要警告你抓紧一个记号笔会泄漏。因此,如果hashmap超过了托管该映射的片段/活动,则很可能是内存泄漏

 类似资料:
  • 问题内容: 我想“ndb”库有内存泄漏,但我找不到在哪里。 有没有办法避免下面描述的问题? 你有更准确的测试方法来找出问题所在吗 是? 我就是这样再现这个问题的: 我用2个文件创建了一个极简的Google应用程序引擎。 : : 我上传了一个名为“/create”的应用程序。 之后,每次对的调用都会增加实例使用的内存。直到 由于错误“超出了128 MB的软专用内存限制,它将停止 总共为5个请求提供服

  • 我是android开发的新手,我刚刚从以下链接读到了Romain Guy的“避免android内存泄漏” http://www.curious-creature.org/2008/12/18/avoid-memory-leaks-on-android/ 然后我在我的android模拟器上用他著名的代码片段做了一个小测试 此代码应该在更改方向时泄漏第一个活动上下文。因此,我在emulator中运行了

  • 问题内容: 所以我有这个C ++程序,它是通过Java程序中的JNI调用的,代码如下: 在倒数第二行中,从不释放而是返回,是否会导致最终的内存泄漏?反正有解决这个问题的方法吗? 还有可能不是返回字符串而是返回布尔值(由LogonUser函数返回),而不是jstring,而是添加了要在方法中传递的“ errormessage”引用,并更新了它?我的Java程序能否看到“ errormessage”的

  • 所以我看到了一个特殊的例外,我敢肯定的是谷歌地图的绘图代码。 我有一个片段,在那里我以编程方式添加了一个支持地图片段,然后我在其中操纵谷歌地图实例。 这是stacktrace: 我无法可靠地复制它(尽管这种情况经常发生),我已经查看了ReadWriteDirectByteBuffer和ShortToByteBufferAdapter,但没有任何东西突然出现在我面前。 有什么想法吗?

  • 本文向大家介绍避免 Android中Context引起的内存泄露,包括了避免 Android中Context引起的内存泄露的使用技巧和注意事项,需要的朋友参考一下 Context是我们在编写Android程序经常使用到的对象,意思为上下文对象。 常用的有Activity的Context还是有Application的Context。Activity用来展示活动界面,包含了很多的视图,而视图又含有图片

  • 最终我胡说八道:我如何在谷歌地图中设置缩放级别,让我所有的标记都变得可见?我读过使用多边形的例子,但我认为这是一个很远的概念?! 那么,有没有一种方法可以在没有多边形的情况下动态缩放? 如果没有,是否有使用多边形的简单示例?我有一个名为gMarkers的数组,其中有一列表示lat,一列表示lng。所以循环通过数组将使用gMarkers[i][1]和gMarkers[i][2]。