2017-11-01 51 views
5

Mam dwie usługi ułatwień dostępu w dwóch różnych aplikacjach na urządzeniu. Każdy z nich zwraca uwagę na inne aplikacje. Miałem do czynienia z następującym problemem: gdy 2 usługi dostępności są włączone, tylko jeden z nich rysuje widok, a drugi nie ma żadnych zdarzeń.Kilka aplikacji, które wyświetlają inne aplikacje dzięki pomocy Usługi dostępności nie działają w tym samym czasie.

Konfiguracja zdarzeń jest następujący:

@Override 
protected void onServiceConnected() { 
    AccessibilityServiceInfo info = new AccessibilityServiceInfo(); 
    info.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED; 
    info.feedbackType = AccessibilityEvent.TYPES_ALL_MASK; 
    info.notificationTimeout = TIMEOUT_IN_MS; 
    setServiceInfo(info); 
    super.onServiceConnected(); 
} 

mogę odtworzyć go na pre-Lollipop wersji Androida, także na Androida M. Chociaż na Android O i N, wszystkie usługi działają dobrze.

Czy ktoś mógłby mi wyjaśnić, jak to się dzieje, może są pewne ulepszenia zaczynające się od Androida N? Jeśli istnieje sposób, aby działały w tym samym czasie, czy mógłbyś podać mi implementację tego?

Odpowiedz

2

Po prostu nie możesz uruchomić dwóch usług ułatwień dostępu naraz Pre Android N. One zawsze się zawiesza i tworzy usługę nieaktualnego/demona, która działa w tle, uniemożliwiając ponowne uruchomienie usługi, która uległa awarii. Jest to niezależne od sposobu działania usługi i jej działania. W rzeczywistości nawet fałszywa usługa UIAutomation, która działa z testami Android Instrumentation, spowoduje awarię usługi. Nie ma możliwości obejścia tego ograniczenia.

+0

Ale nie ma żadnych awarii. – LeShChEnKoUa

+0

To nie polubi ANR, wydrukuje tylko stos ostrzegawczy Trace i przejdzie w tryb demona. – ChrisCM

+0

Dzięki za wyjaśnienie. – LeShChEnKoUa