Android Studio 3.1 EditText 循环调用导致:StackOverflowError: stack size 8MB

升级到Android Studio 3.1后,原来项目中一个简单的EditText都会报StackOverflowError错误。

代码如:

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

当点击EditText,获焦时getTextBeforeCursor方法循环调用,最后导致了堆溢出异常,异常如下:

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)

在Stackoverflow上有人说这是Android Studio 3.1 advanced profiling的bug:https://issuetracker.google.com/issues/76404689

解决方法:

禁用advanced profiling:

 Edit Configurations -> Profiling -> 去掉Enable advanced profiling的勾选

如图:

版权声明:著作权归作者所有。

mark
相关推荐

Kotlin:循环语句for与while

For语句使用for语句做迭代需要满足:提供一个迭代器Iterator。使用成员函数提供迭代器如Array:operator fun iterator(): Iterator<T> 注意:iterator()函数需要使用operator标记。使用扩展函数提供迭代器除了添加成员函数iterator提供迭代器外,也可以通过extension function来添加iterator

Android Studio 3内置支持Java 8的相关配置

Android Studio 3开始支持Java 7全部的特性,以及内置支持Java 8部分特性。原理Android Studio 3支持Java 8做法是使用称为desugar工具把javac编译后的.class做字节转换,转换为新的.class文件,最后使用dex转换为dex文件。配置Android Studio&