Насколько я понимаю, установка свойстваtificationTimeout в AccessibilityService должна ограничивать вызов onAccessibilityEvent чаще, чем этот тайм-аут. Я попытался установить это как в файле xml службы специальных возможностей, так и программно с помощью setServiceInfo.
Однако, независимо от того, что я установил, я получаю очень частые вызовы onAccessibilityEvent.
Вот некоторые моего кода:
XML:
<accessibility-service
xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeWindowStateChanged|typeWindowContentChanged"
android:accessibilityFeedbackType="feedbackAllMask"
android:accessibilityFlags="flagReportViewIds|flagIncludeNotImportantViews"
android:canRetrieveWindowContent="true"
android:description="@string/accessibility_service_description"
android:notificationTimeout="100">
JAVA:
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
AccessibilityServiceInfo accessibilityServiceInfo = new AccessibilityServiceInfo();
accessibilityServiceInfo.notificationTimeout = 1000;
setServiceInfo(accessibilityServiceInfo);
Utils.logDebug(TAG, "TIMEOUT: " + getServiceInfo().notificationTimeout);
long currentTime = System.currentTimeMillis();
long timeSinceLastEvent = currentTime - timeLastAccessibilityEvent;
Utils.logDebug(TAG, "onAccessibilityEvent(), type: " + event.getEventType() + ", last event: " + timeSinceLastEvent + "ms ago");
if(!event.equals(lastAccessibilityEvent) && timeSinceLastEvent < MAX_FREQUENCY_ACCESSIBILITY_EVENT_MS) {
Utils.logDebug(TAG, "Too soon, returning!");
timeLastAccessibilityEvent = currentTime;
return;
}
timeLastAccessibilityEvent = currentTime;
}
Журнал отладки NotificationTimeout корректно читает все, что я установил, но Я получаю вызовы с частотой 0 мс, даже если он должен ждать целую секунду!
Вот аналогичный вопрос: Время ожидания уведомления - Задание задержки между событиями доступности