Google 的 SupportMapFragment MapView 在从另一个 Fragment 弹出后性能低下

Google's SupportMapFragment MapView low performance after poping back from another Fragment

从堆栈返回后,SupportMapFragment 滞后并且整体性能不佳。

问题很奇怪,因为我使用导航图进行导航,但问题并不总是存在。以下是两种不同的场景:

MapFragment -> AnotherFragment(通过 ActionBar 菜单项) -> Mapfragment

override fun onOptionsItemSelected(item: MenuItem?): Boolean {
        onNavDestinationSelected(item!!, navController)
        return super.onOptionsItemSelected(item)
    }

在这种情况下,MapFragment 在按下 AnotherFragment 中的后退按钮后滞后

MapFragment -> AnotherFragment(通过默认按钮) -> Mapfragment

navController.navigate(R.id.action_mapFragment_to_anotherFragment)

在这种情况下,MapFragment 正常运行。

我曾尝试在 onOptionsItemSelected(item: MenuItem?) 中使用 navController.navigate(R.id.action_mapFragment_to_anotherFragment),但我得到了相同的结果。

我也知道 this 有同样问题的问题,但在完全不同的情况下,答案也不是很有帮助。

所以问题不在于 Mapfragment 或 Google 的 SupportMapFragment,而是某种 Android UI 错误。我能够避免它,我想分享解决方案。

问题本身出在ActionBar的导航上,原来的设置是这样的。在res/menu/menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:title="@string/about"
        android:id="@+id/options_more"
        android:icon="@drawable/ic_baseline_more_vert_24px"
        android:orderInCategory="100"
        app:showAsAction="always" />
        <menu>
            <item
                android:id="@+id/anotherFragment"
                android:title="@string/another_menu_title" />

            <item
                android:id="@+id/alsoAnotherFragment"
                android:title="@string/alsoanother_menu_title" />
        </menu>
    </item>
</menu>

在这种情况下,当点击右上角的菜单项时,会出现一个下拉菜单(其中包含另外两个项目)。

当我使用这样的布局时,发生了滞后。经过几个小时的反复试验,我将下拉菜单分成两个单独的按钮,如下所示:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/anotherFragment"
        android:icon="@drawable/ic_baseline_location_city_24px"
        android:title="@string/about"
        app:showAsAction="ifRoom"/>
    <item
        android:id="@+id/alsoAnotherFragment"
        android:icon="@drawable/ic_baseline_more_vert_24px"
        android:title="@string/about"
        app:showAsAction="ifRoom"/>
</menu>

所以下拉菜单已经关闭,问题现在已经解决了。一切正常,滞后消失了。我真的不明白问题的根源是什么,但我认为它必须有某种解释。