Задний план
У меня есть приложение с AccessibilityService
. Кажется, Android постоянно поддерживает AccessibilityService
, но мне нужно только мой запускался иногда. (В частности, если пользователь открывает мое приложение и выключает его, AccessibilityService
уже не нужен)
Если мой AccessibilityService
работает, когда он не нужен, он тратит ОЗУ и ЦП устройства, и я хочу по возможности не делать этого для своих пользователей.
Вопрос
Как программно запустить и остановить мой 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())
. Это останавливает службу от получения событий доступности, но служба по-прежнему работает в фоновом режиме.
Похожие вопросы
Можно ли остановить или убить службу специальных возможностей?
Это только об остановке службы. Я хочу иметь возможность снова запустить службу после ее остановки.