首页 / 浏览问题 / 移动GIS / 问题详情
android端 加载高德底图 返回,再次进入,如此反复,会导致内存堆栈溢出。
10EXP 2022年09月09日

使用产品  imbile 10.2 操作系统 android

android端 加载高德底图,进行点线的绘制,之后页面返回,再次进入,如此反复,会导致内存堆栈溢出。

在onDestory中,已经对map,mapcontroll,workspace进行了close和dispose处理。

请问这种情况应该如何处理? 

1个回答

您好,请问您大概这样反复打开工作空间,打开地图,再绘制点,进行了多少次才会内存堆溢出呢,您那边是否把点对象及时释放掉了呢
3,690EXP 2022年09月09日

三次一般就会溢出,点对象也需要手动回收吗?   关于资源回收我应该参考哪些文档?有相关的比较完整的示例可以参考吗?

iMobile for Android 对象释放规范  

这里面我看只有说回收map mapcontroll connection 以及workspace 。 还有就是数据集的一些回收

没有说点信息也需要回收啊。  而且我只画了一个点 和几条线。

另外就是,在资源回收的时候发现很耗时,导致onDestroy执行很慢,返回上一页面后会存在短暂的卡顿情况。 针对这种情况,又应该怎么处理呢?

建议您不要把释放方法放到onDestory中,还有点对象等几何对象要用geometry.dispose方法释放
map.dispose 释放地图资源 不会自动释放几何对象吗?  如果不会,我调用哪些方法可以得到这些几何对象进行释放?  

另外释放不在onDestroy中进行释放,在什么时候进行释放比较好?
1.如果您要切换地图,那就使用释放方法,只是结束应用不需要特地去释放

2.geometry也有对应的dispose方法,在添加或使用对象结束后,就可以使用geometry
...