Android Studio 3.1 EditText StackOverflowError

Android Studio 3.1 EditText StackOverflowError

更新到 Android Studio 3.1 后,当 EditText 处于焦点时我遇到异常

E/AndroidRuntime: FATAL EXCEPTION: main
Process: <package>, PID: 18938
java.lang.WhosebugError: stack size 8MB
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)

知道如何解决这个问题吗?

更新:

经过一些研究,我发现 WhosebugError 出现在带有简单 EditText 的不同堆栈跟踪中:

<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"/>

当尝试输入任何符号时,我得到:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: <package>, PID: 21122
java.lang.WhosebugError: stack size 8MB
    at android.view.inputmethod.InputConnectionWrapper.beginBatchEdit(InputConnectionWrapper.java:106)

当我按回:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: <package>, PID: 21280
java.lang.WhosebugError: stack size 8MB
    at android.view.inputmethod.InputConnectionWrapper.finishComposingText(InputConnectionWrapper.java:78)

即使在 WebView 中输入文本也会导致此错误

在 AS 3.0 中 EditText 工作正常

更新到 Android Studio 3.1 后立即面临同样的 EditText 问题。尝试在 build.gradle 中为调试构建类型设置 debuggable false。或者只是切换到发布构建类型,因为默认情况下它是错误的。这对我有帮助。

更新:确认禁用高级分析也解决了我的问题。

我遇到了同样的问题,但是之后:

  • 正在删除 .idea、.gradle、gradle 文件夹并重新创建它。
  • 清理项目。
  • 重建应用

对我有用。

这似乎只发生在 Android 6.0 设备上,EditText 在 Android 5 和 android 7 设备上工作正常。在 运行 配置中禁用高级分析(API < 26)对我有用。

@evi pointed out there is a bug in advanced profiling.

现在禁用它(编辑配置设置 -> 分析 -> 启用高级分析) 防止 EditText 崩溃

更新:

已在 Android Studio 3.1.1

中发布修复

高级分析再次可用!

Android 5.1.1,同样的问题。似乎是新 Android Studio 中的错误。禁用高级分析修复了调试版本的问题。