使用产品:supermap-imobile-10.1.2-220-android-zip-chs_(精简绿色包)
操作系统:Android(Redmi 5 Plus,MIUI 11.0.3)
问题详细描述:
现需要在三维场景中使用代码进行点、线、面、文字标注等的绘制,已通过往SceneControl.scene.trackingLayer中添加Geometry3D相应子类实现。
根据文档描述,图形对象的回收使用Geometry3D.dispose()方法完成。我这边回收资源的实现逻辑是,遍历SceneControl.scene.trackingLayer中的每一个对象,并调用其dispose()方法,然后清空SceneControl.scene.trackingLayer列表。通过重复创建Geometry3D子类对象然后回收的方法,并结合Android Profiler工具进行内存分析,发现:
1、点(GeoPoint3D)、线(GeoLine3D)、面(GeoRegion3D)图形对象可在SceneControl.scene.trackingLayer遍历到,调用其dispose()方法无异常,但内存并未减少
2、文字标注(GeoText3D)无法在SceneControl.scene.trackingLayer遍历到,发生异常错误:java.lang.NullPointerException: Attempt to invoke virtual method 'void com.supermap.data.InternalHandleDisposable.setIsDisposable(boolean)' on a null object reference
3、清空SceneControl.scene.trackingLayer列表后,内存并未减少
请问如何正确地回收Geometry3D子类对象的资源?