是什么原因导致TextView上的setText出现ANR



现在Firebase有了ANR报告,我看到了一些在Play Store控制台上从未见过的ANR。我很难理解在某些情况下我做错了什么,例如,在TextView上调用setText时,我有一个ANR。我该如何着手解决这个问题?是因为这段文字太长还是什么?

main (runnable): tid=1 systid=22334
at android.content.ContextWrapper.getBaseContext(ContextWrapper.java:91)
at androidx.appcompat.view.ContextThemeWrapper.getSystemService(ContextThemeWrapper.java:167)
at android.view.ContextThemeWrapper.getSystemService(ContextThemeWrapper.java:188)
at android.app.Activity.getSystemService(Activity.java:6896)
at android.view.ContextThemeWrapper.getSystemService(ContextThemeWrapper.java:188)
at android.content.Context.getSystemService(Context.java:3736)
at android.widget.Editor.getInputMethodManager(Editor.java:1919)
at android.widget.Editor.extractedTextModeWillBeStarted(Editor.java:2706)
at android.widget.Editor.refreshTextActionMode(Editor.java:2454)
at android.widget.TextView.spanChange(TextView.java:11989)
at android.widget.TextView$ChangeWatcher.onSpanAdded(TextView.java:15285)
at android.text.SpannableStringBuilder.sendSpanAdded(SpannableStringBuilder.java:1297)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:787)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:686)
at android.text.Selection.setSelection(Selection.java:96)
at android.text.Selection.setSelection(Selection.java:78)
at android.text.Selection.setSelection(Selection.java:153)
at android.text.method.ArrowKeyMovementMethod.initialize(ArrowKeyMovementMethod.java:325)
at android.widget.TextView.setText(TextView.java:6933)
at android.widget.TextView.setText(TextView.java:6761)
at android.widget.EditText.setText(EditText.java:145)
at android.widget.TextView.setText(TextView.java:6713)
at MyActivity.mySetTextMethod(MyActivity.java)

有时你最好不要这样做,因为你会浪费很多时间来弄清楚那台设备上到底发生了什么。有时它的显示分辨率似乎太低,有时它只是设备本身的自定义操作系统。对我来说,这似乎更像是安卓设备的问题,而不是你的应用程序本身。

看看这篇文章。可能您使用错误的上下文初始化了TextView:getContext((、getApplicationContext((和"这个";

最新更新