fix: GlobalActionRecorder register invalid subscriber; opt: rememove getRootInActiveWindow on every onAccessibilitySerive()

This commit is contained in:
hyb1996
2017-12-09 00:23:23 +08:00
parent b6f251da0b
commit 87c7cc73c3
6 changed files with 22 additions and 24 deletions

View File

@@ -61,20 +61,24 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
Log.v(TAG, "onAccessibilityEvent: " + event);
if (!containsAllEventTypes && !eventTypes.contains(event.getEventType()))
return;
AccessibilityNodeInfo root = super.getRootInActiveWindow();
if (root != null) {
mFastRootInActiveWindow = root;
Log.v(TAG, "root not null: " + event);
int type = event.getEventType();
if (type == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED ||
type == AccessibilityEvent.TYPE_VIEW_FOCUSED) {
AccessibilityNodeInfo root = super.getRootInActiveWindow();
if (root != null) {
mFastRootInActiveWindow = root;
}
}
for (Map.Entry<Integer, AccessibilityDelegate> entry : mDelegates.entrySet()) {
AccessibilityDelegate delegate = entry.getValue();
Set<Integer> types = delegate.getEventTypes();
if (types != null && !delegate.getEventTypes().contains(event.getEventType()))
continue;
long start = System.currentTimeMillis();
//long start = System.currentTimeMillis();
if (delegate.onAccessibilityEvent(AccessibilityService.this, event))
break;
Log.v(TAG, "millis: " + (System.currentTimeMillis() - start) + " delegate: " + entry.getValue().getClass().getName());
//Log.v(TAG, "millis: " + (System.currentTimeMillis() - start) + " delegate: " + entry.getValue().getClass().getName());
}
}
@@ -89,12 +93,9 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
if (mKeyEventExecutor == null) {
mKeyEventExecutor = Executors.newSingleThreadExecutor();
}
mKeyEventExecutor.execute(new Runnable() {
@Override
public void run() {
stickOnKeyObserver.onKeyEvent(event.getKeyCode(), event);
mOnKeyObserver.onKeyEvent(event.getKeyCode(), event);
}
mKeyEventExecutor.execute(() -> {
stickOnKeyObserver.onKeyEvent(event.getKeyCode(), event);
mOnKeyObserver.onKeyEvent(event.getKeyCode(), event);
});
return false;
}