是什么触发了对Android上AccessibilityInteractionController.performAccessibilityActionUiThread的调用?
当用户与应用了是什么触发了对Android上AccessibilityInteractionController.performAccessibilityActionUiThread的调用?,android,android-edittext,android-input-filter,Android,Android Edittext,Android Input Filter,当用户与应用了LengthFilterInputFilter的EditText交互时,三星Galaxy S 7 Edge发生崩溃。用户将如何调用方法AccessibilityInteractionController.performAccessibilityActionUiThread 我查看了AccessibilityInteractionController的源代码,但找不到关于用户将如何触发该方法的良好文档 我的崩溃的堆栈跟踪与以下问题中的内容类似: 查看Android,这个问题似乎
LengthFilter
InputFilter
的EditText
交互时,三星Galaxy S 7 Edge发生崩溃。用户将如何调用方法AccessibilityInteractionController.performAccessibilityActionUiThread
我查看了AccessibilityInteractionController
的源代码,但找不到关于用户将如何触发该方法的良好文档
我的崩溃的堆栈跟踪与以下问题中的内容类似:
maxLength
属性,导致崩溃
建议的解决方案似乎有效:创建一个子类,然后使用它。(复制代码以供参考)
是否在执行任何操作时都需要调用
活动。RunOnUIThread
“Android的UI组件不是线程安全的,因此当从异步数据库查询或web服务调用返回时,可能需要从辅助线程更新视图或其他UI组件。如果从辅助线程运行代码,您可能会发现几乎每次尝试都会导致代码崩溃。”
public class SafePinEntryEditText extends EditText {
public SafePinEntryEditText(Context context) {
super(context);
}
public SafePinEntryEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SafePinEntryEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@TargetApi(21)
public SafePinEntryEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
public void setSelection(int index) {
// prevent index out of bounds caused by AccessibilityService events
if (index > length()) {
index = length();
}
super.setSelection(index);
}
@Override
public void setSelection(int start, int stop) {
// prevent index out of bounds caused by AccessibilityService events
if (start > length()) {
start = length();
}
if (stop > length()) {
stop = length();
}
super.setSelection(start, stop);
}
}