首页 / 浏览问题 / 移动GIS / 问题详情
Android释放资源页面崩溃
45EXP 2022年05月16日
Dataset dataset = mapControl.getMap().getLayers().get(pos).getDataset();
DatasetVector datasetVector = (DatasetVector) dataset;
fieldInfos = datasetVector.getFieldInfos();
fieldInfo = fieldInfos.get(index);

public void onDestroy() {
    super.onDestroy();
    fieldInfo.dispose();
    fieldInfos.dispose();
}

然后在释放资源的时候会闪退,是因为我的数据集没有释放导致的嘛

1个回答

您好,这个闪退可能是由于Android生命周期导致的闪退。可以看下这篇博客:https://blog.csdn.net/weixin_31626765/article/details/117297929

9,232EXP 2022年05月16日
好的我研究研究
private boolean isdestoryed =false;
private void isdestoryed(){
    if (isDestroyed()){
        return;
    }
    fieldInfo.dispose();
    fieldInfos.dispose();
    isdestoryed=true;
}

protected void onPause() {
    super.onPause();
    if (isFinishing()){
        isdestoryed();
    }
}

@Override
protected void onDestroy() {
    super.onDestroy();
    isdestoryed();
}

我用了这种办法释放还是闪退  我释放资源闪退,报错是报mMapControl.getMap().getLayers()是空指针

您好,您那边调试一下代码看下是哪句代码报的错,根据报错信息应该不是资源释放导致的

这个报错是在其他的activity报的 

这种情况一般是你把mapcontrol给释放了导致获取不到地图,看下资源释放的时候什么情况下会走initView这个方法。多打断点输出一下

在这一行的时候闪退了,因为这个是子页面,我调用的主页面公共静态的MapControl,finish的时候我没有释放mapcontrol的资源,我释放的是,字段集合。

Dataset dataset = mapControl.getMap().getLayers().get(pos).getDataset();
DatasetVector datasetVector = (DatasetVector) dataset;
fieldInfos = datasetVector.getFieldInfos();
fieldInfo = fieldInfos.get(index);

释放字段集合不会影响到mapcontrol的,您那边能否给一个可以重现这个问题的demo给我。联系方式私信您
这个地方可以暂时不用释放字段集合,可以在app关闭后统一释放
...