【发布时间】:2018-11-01 01:10:48
【问题描述】:
尝试使用 Android AccessibilityService,将 AccessibilityEvent 传递给 AsyncTask,但 AccessibilityEvent 中的所有值都消失了,例如 mEventTime 变为 0,mPackageName 变为 null 等。无法理解这里发生了什么
public class MyAccessibilityService extends AccessibilityService {
public void onAccessibilityEvent(AccessibilityEvent event) {
new MyTestAsync().execute(event); //event not null
}
public class MyTestAsync extends AsyncTask<Object, Void, Void> {
private AccessibilityEvent event;
@Override
protected ArrayList<AccessibilityNodeInfo> doInBackground(Object... params) {
this.event = (AccessibilityEvent) params[0]; //getting null values in event like mEventTime = 0, mPackageName = null
}
}
捕获以下类型的事件
android:accessibilityEventTypes="typeWindowStateChanged|typeViewFocused|typeWindowContentChanged"
【问题讨论】:
-
您可以将可访问性提取的数据传递给您的异步任务,但在 onAccessibilityEvent() 中创建异步任务非常糟糕,因为此方法将在每个事件上调用,并且系统中的异步任务数量有限制
-
@MirzaAhmedBaig 你提醒我注意一些 AsyncTask 限制,但我的主要动机是在获取 AccessibilityEvent 后在后台进行所有处理。是的,我可以将可访问性提取的数据传递给我的异步任务,但尝试理解为什么会为空。
-
嘿,伙计,你有什么东西吗??
-
直到现在...
-
您有解决方案吗?即使我也面临着类似的问题。
标签: android android-asynctask nullpointerexception accessibilityservice android-accessibility