Фон
У меня есть приложение с AccessibilityService
. Android, похоже, постоянно держит AccessibilityService
, но мне нужно только для запуска. (В частности, если пользователь открывает мое приложение и отключает его, AccessibilityService
больше не требуется.)
Если мой AccessibilityService
работает, когда он не нужен, он расточает RAM и процессор устройства, и я хочу избежать сделав это для моих пользователей, если это возможно.
Вопрос
Как я могу программно запустить и остановить мой AccessibilityService
?
Обратите внимание, что я не запрашиваю программно включить или отключить AccessibilityService
в настройках доступности Android; это только начало и остановка, когда она уже включена.
То, что я пробовал (остановка AccessibilityService
)
-
Отключить компонент
AccessibilityService
, используя следующее:PackageManager.setComponentEnabledSetting( accessibilityServiceName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0 );
Это убило все приложение, включая
AccessibilityService
. Кроме того, после перезагрузки телефонаAccessibilityService
больше не отображается в настройках доступности Android. (Кажется, что компонент необходимо повторно включить, а затем перезапустить телефон, чтобы он снова появился.) -
Отключить компонент
AccessibilityService
, используя следующее:PackageManager.setComponentEnabledSetting( accessibilityServiceName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP );
Это не остановило
AccessibilityService
. -
Остановка
AccessibilityService
с помощьюContext.stopService()
иService.stopSelf()
. Это не остановило службу, предположительно поскольку ОС привязана к ней. -
Убив
AccessibilityService
с помощьюProcess.killProcess()
. Однако служба была вскоре перезапущена и снова подключена, предположительно, потому что ОС привязана к ней. -
Отмена регистрации событий доступности с помощью
AccessibilityService.setServiceInfo(new AccessibilityServiceInfo())
. Это останавливает обслуживание от получения событий доступности, но служба по-прежнему работает в фоновом режиме.
Связанные вопросы
-
Можно ли остановить или убить службу доступности?
Это только остановка службы. Я хочу иметь возможность запустить службу снова, как только она остановится.