Может ли служба доступности быть остановлена ​​или убита?

Я написал службу доступности и хочу, чтобы служба была остановлена ​​/убита, как только она получит событие доступности (т.е. в методе onAccessibilityEvent). Это можно сделать? Я пытался убить, используя процесс уничтожения, как показано ниже, но он не работает.

unbindService (mSvcConn);
android.os.Process.killProcess(android.os.Process.myPid());

Я дал разрешение ниже в AndroidManifest.xml

Я знаю, что служба доступности не может быть запущена программно, но ее нельзя остановить/убить?

Ответ 1

Служба доступности не может удалить себя из списка разрешенных служб или убить свой собственный процесс без автоматического перезапуска, но вы можете вызвать AccessibilityService.setServiceInfo(new AccessibilityServiceInfo()), чтобы эффективно отключить вашу службу.

Вызов AccessibilityManager.isEnabled() все равно вернет true, но ваша служба не получит события.

Ответ 2

В Android 7.0 (API 24) вы можете вызвать disableSelf() в AccessibilityService, чтобы отключить эту услугу, что также останавливает ее.