【发布时间】:2015-11-20 10:42:54
【问题描述】:
我有一个AccessibilityEvent,它可以自动停止应用程序。但是当启动应用程序信息意图时,它会进入打开/关闭警报对话框的无限循环。
我该如何预防呢?代码如下:
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
if (AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED == event
.getEventType()) {
AccessibilityNodeInfo nodeInfo = event.getSource();
if (nodeInfo == null) {
return;
}
List<AccessibilityNodeInfo> list = nodeInfo
.findAccessibilityNodeInfosByViewId("com.android.settings:id/force_stop_button");
for (AccessibilityNodeInfo node : list) {
Log.i(TAG, "check1 = " + check);
node.performAction(AccessibilityNodeInfo.ACTION_CLICK);
check = true;
}
list = nodeInfo
.findAccessibilityNodeInfosByText("CANCEL");
for (AccessibilityNodeInfo node : list) {
node.performAction(AccessibilityNodeInfo.ACTION_CLICK);
}
}
}
顺便说一句,在应用信息意图开始后立即点击force_stop_button 有什么想法吗?
编辑:我认为问题出在AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED。如果我绕过该检查,它可以工作,但很难控制。
【问题讨论】:
-
我也在做同样的事情,我的应用程序也崩溃了。你能建议你为纠正这个问题做了什么吗?
-
崩溃?有日志吗?
-
它会在一段时间后崩溃。在日志中它显示为“将代码缓存容量增加到 128KB”...“将代码缓存容量增加到 256KB”...“将代码缓存容量增加到 512KB”这样然后它就崩溃了
-
听起来像是内存泄漏:stackoverflow.com/questions/29193726/…
-
顺便说一句,使用 findAccessibilityNodeInfosByText(string) 是一个选项 :))
标签: android accessibility accessibilityservice accessibility-api