首页 / 浏览问题 / 移动GIS / 问题详情
MapControl2内存泄漏
25EXP 2022年02月16日

使用产品:SuperMap iMobile 9D(2019)
数据类型: .SMWU  .udb
问题详细描述:HomeActivity使用SuperMap加载地图,在HomeActivity的onDestroy中也调用了SuperMap相关的销毁,如下:

mapcontrol.getMap().close()

mapcontrol.getMap().dispose()

mapcontrol.dispose()

workspaceconnectioninfo.dispose()

workspace.close()

workspace.dispose()

然后反复的进入,退出HomeActivity,多次操作,提示如下

导出相关的.hprof文件,到android studio中分析,如下

请问这是什么原因导致的内存泄漏

1个回答

您好,不建议重复执行mapcontrol.dispose(),可以先将它注释掉,看下是否还会崩
2,842EXP 2022年02月16日
没有重复执行mapcontrol.dispose()啊,而且不是崩溃,就是内存泄漏,HomeActivity无法释放(因为被什么给引用了,导致无法释放),泄漏是用LeakCanary工具检测的
你好,可以参考下面的做法

1. 程序主界面初始化完成后,就初始化workspace, mapview等对象,作为全局使用。(不再二次初始化)

2.关联map,打开数据源,打开Fmap等, map作为全局使用。( 不再二次打开)

3.在地图界面,动态用布局添加mapview,添加完成后,设置地图的视角位置等。在退出时移除mapview布局即可。
...