Android Studio 3.1 EditText StackOverflowError

时间:2018-03-27 12:33:44

标签: android android-studio android-studio-3.1

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

E/AndroidRuntime: FATAL EXCEPTION: main
Process: <package>, PID: 18938
java.lang.StackOverflowError: 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)

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

更新

经过一番研究后,我发现StackOverflowError出现了不同的堆栈跟踪和简单的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.StackOverflowError: stack size 8MB
    at android.view.inputmethod.InputConnectionWrapper.beginBatchEdit(InputConnectionWrapper.java:106)

当我按下时:

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

甚至在WebView中输入文本导致此错误

在AS 3.0中,EditText正常工作

5 个答案:

答案 0 :(得分:75)

正如@evi指出的那样a bug in advanced profiling

现在禁用它(编辑配置设置 - &gt;性能分析 - &gt;启用高级性能分析)可防止EditText崩溃

<强>更新

Android Studio 3.1.1

中发布的修正

再次提供高级分析!

答案 1 :(得分:7)

这似乎只发生在Android 6.0设备上,EditText在Android 5和Android 7设备上运行良好。在运行配置中禁用高级分析(API&lt; 26)对我来说很有用。

答案 2 :(得分:6)

Android 5.1.1,同样的问题。似乎是新Android Studio中的错误。禁用高级分析可以解决调试构建的问题。

答案 3 :(得分:2)

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

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

答案 4 :(得分:0)

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

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

它对我有用。