uni-app 进入使用地图的页面返回主页面时发生闪退

uni-app 进入使用地图的页面返回主页面时发生闪退

项目信息 详情
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 19043.928
HBuilderX类型 正式
HBuilderX版本号 3.4.6
手机系统 Android
手机系统版本号 Android 12
手机厂商 小米
手机机型 红米k30pro
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

  • 进入地图页面然后返回主页面

预期结果:

  • 不闪退

实际结果:

  • 闪退

bug描述:

hbuilderx更新到3.4后云打包,进入地图页面然后返回主页面会发生闪退;更新之前都是好的

14 回复

HX3.4.7已修复该问题


有没有大佬看看啊

提供完整示例及复现步骤我们测试看看

就是进入右下角海上救援页面然后返回。

回复 9***@qq.com: 收到 已开始验证

回复 9***@qq.com: 你好测试时 默认基座调试能复现问题

回复 DCloud_Android_ST: 我用默认基座调试没有出现闪退呢?具体是什么原因您们发现了?

回复 9***@qq.com: 你的APP确实能复现问题。具体是高德地图内部底层报错。我们在想办法确认原因并及时修复

回复 DCloud_Android_ST: 目前已确认是更新高德SDK导致 目前测试更新高德SDK最新版本问题修复。预测未来两天会再次发版修复该问题

回复 DCloud_Android_ST: 好的,谢谢

在使用 uni-app 开发时,进入使用地图的页面后返回主页面时发生闪退,可能是由于以下几个原因导致的。以下是一些常见的排查和解决方法:

1. 地图组件未正确销毁

  • 问题描述:在返回主页面时,地图组件可能没有正确销毁,导致内存泄漏或资源未释放,从而引发闪退。

  • 解决方法:在页面的 onUnload 生命周期中,手动销毁地图组件或释放相关资源。

    onUnload() {
      // 销毁地图实例
      if (this.map) {
        this.map.destroy();
        this.map = null;
      }
    }

2. 内存泄漏

  • 问题描述:地图组件可能占用了大量内存,如果页面频繁切换,可能会导致内存不足,从而引发闪退。

  • 解决方法:优化地图组件的使用,避免在页面中频繁创建和销毁地图实例。可以考虑使用 keep-alive 缓存页面,减少地图组件的重复创建。

    <keep-alive>
      <map-page></map-page>
    </keep-alive>

3. 地图 SDK 版本问题

  • 问题描述:使用的地图 SDK 版本可能存在兼容性问题或已知的 Bug,导致闪退。
  • 解决方法:检查并更新地图 SDK 到最新版本,或者尝试使用其他版本的地图 SDK。

4. 页面生命周期管理不当

  • 问题描述:在页面切换时,可能没有正确处理页面的生命周期,导致资源未释放或状态不一致,从而引发闪退。

  • 解决方法:确保在页面的 onHideonUnload 生命周期中,正确释放资源和清理状态。

    onHide() {
      // 暂停地图的渲染或其他操作
      if (this.map) {
        this.map.pause();
      }
    }
    
    onUnload() {
      // 销毁地图实例
      if (this.map) {
        this.map.destroy();
        this.map = null;
      }
    }
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!