You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HMS Map Kit首次加载正常 第二次加载抛出数组越界异常崩溃

问题根因

该崩溃是FragmentContainerView配合导航组件使用时,MapView生命周期管理逻辑与原生<fragment>标签存在差异,叠加MapView初始化顺序错误、HMS SDK重复初始化导致内部状态异常,触发数组越界。

解决方案

1. 调整MapView初始化顺序

MapView必须先执行生命周期初始化,再绑定地图回调,修正onViewCreated中的代码顺序:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    ((requireActivity()) as MainActivity).hideShowBottomBar(true)
    initialising()
    gettingDatForMap()
    getDeviceLocation()
    // 先调用MapView生命周期方法,再绑定回调
    car_maps.onCreate(mapViewBundle ?: savedInstanceState)
    car_maps.getMapAsync(this)
    implementingClickListener()
}

2. 调整ApiKey初始化位置

将MapsInitializer.setApiKey("你的ApiKey")从Fragment的onCreate中移到项目自定义Application的onCreate方法中,避免每次Fragment创建重复初始化SDK导致状态混乱。

3. 补全MapView生命周期绑定

在地图Fragment的所有生命周期方法中同步调用MapView对应的生命周期方法,避免状态残留:

override fun onStart() {
    super.onStart()
    car_maps.onStart()
}

override fun onResume() {
    super.onResume()
    car_maps.onResume()
}

override fun onPause() {
    super.onPause()
    car_maps.onPause()
}

override fun onStop() {
    super.onStop()
    car_maps.onStop()
}

override fun onDestroyView() {
    super.onDestroyView()
    car_maps.onDestroy()
}

override fun onSaveInstanceState(outState: Bundle) {
    super.onSaveInstanceState(outState)
    val mapViewBundle = outState.getBundle(MAPVIEW_BUNDLE_KEY) ?: Bundle()
    car_maps.onSaveInstanceState(mapViewBundle)
    outState.putBundle(MAPVIEW_BUNDLE_KEY, mapViewBundle)
}

override fun onLowMemory() {
    super.onLowMemory()
    car_maps.onLowMemory()
}

4. 适配FragmentContainerView导航逻辑

在导航图中给地图Fragment配置单例启动模式,避免切换导航时重复创建地图实例:

<fragment
    android:id="@+id/findCarMapsFragment"
    android:name="com.shazza.shazzaapp.ui.userside.fragments.findcarmapsfragment.FindCarMapsFragment"
    android:launchMode="singleTop" />

内容的提问来源于stack exchange,提问作者Manzoor Ahmad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 06:12:04