小编Sin*_*zak的帖子

StackOverflowError:来自 Compose 的可访问性的堆栈大小 8MB

从四月份开始,我们遇到了来自 compose 的 StackOverflowError 错误。我们没有 compose 或 Kotlin 版本更新。

该问题仅发生在 Android 8 上。

我们无法在本地重现,并且根据我们的日志,当打开不同的片段时会发生崩溃。我们有一个包含多个片段的活动,并且没有任何日志来指出根本原因。

我们如何减轻崩溃,这是 compose 内部的事情?

崩溃的根本原因可能是什么?

Fatal Exception: java.lang.StackOverflowError: stack size 8MB
   at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.transformMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1827)
   at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.transformMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1822)
   at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.transformMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1822)
   at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.transformMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1822)
   at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.transformMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1822)
   at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.transformMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1822)
   at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.transformMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1822)
   at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.transformMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1822)
   at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.transformMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1822)
   at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.transformMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1822)
   at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.transformMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1822)
   at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.calculateMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1816)
   at androidx.compose.ui.platform.AndroidComposeView.recalculateWindowViewTransforms(AndroidComposeView.android.kt:1446)
   at androidx.compose.ui.platform.AndroidComposeView.recalculateWindowPosition(AndroidComposeView.android.kt:1410)
   at androidx.compose.ui.platform.AndroidComposeView.localToScreen-MK-Hz9U(AndroidComposeView.android.kt:1390)
   at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.createNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.android.kt:366)
   at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.access$sendScrollEventIfNeeded(AndroidComposeViewAccessibilityDelegateCompat.android.kt)
   at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.access$createNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.android.kt)
   at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat$MyNodeProvider.createAccessibilityNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2424)
   at android.view.View.populateVirtualStructure(View.java:8103)
   at android.view.View.populateVirtualStructure(View.java:8106)
   at android.view.View.populateVirtualStructure(View.java:8106)
   at android.view.View.populateVirtualStructure(View.java:8106)
   at android.view.View.populateVirtualStructure(View.java:8106)
   at android.view.View.populateVirtualStructure(View.java:8106)
   at android.view.View.populateVirtualStructure(View.java:8106)
   at android.view.View.populateVirtualStructure(View.java:8106)
   at android.view.View.populateVirtualStructure(View.java:8106) …
Run Code Online (Sandbox Code Playgroud)

android accessibility android-jetpack-compose

11
推荐指数
0
解决办法
336
查看次数

为什么我无法用布局重力锁定DrawerLayout

我使用DrawerLayout,最近我想在drawerLayout中改变listView的重力.但是在我将listView的重力改为android:layout_gravity="start|bottom"from后android:layout_gravity="start",drawerLayout无法锁定

mDrawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
Run Code Online (Sandbox Code Playgroud)

setDrawerLockMode()使用;

<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
</RelativeLayout>

<ListView
    android:id="@+id/drawer_list"
    android:layout_width="320dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="#F3F3F4"
    android:choiceMode="singleChoice" >
</ListView>
Run Code Online (Sandbox Code Playgroud)

但它没有锁定;

<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
</RelativeLayout>

<ListView
    android:id="@+id/drawer_list"
    android:layout_width="320dp"
    android:layout_height="match_parent"
    android:layout_gravity="start|bottom"
    android:background="#F3F3F4"
    android:choiceMode="singleChoice" >
</ListView>
Run Code Online (Sandbox Code Playgroud)

`

任何线索为什么我不能使用其他重力的锁模式?

谢谢!

android listview gravity drawerlayout

8
推荐指数
1
解决办法
9314
查看次数