Sam*_*Sam 8 android accessibilityservice
我有一个带有AccessibilityService. Android 似乎一直AccessibilityService在运行,但我有时只需要运行我的。(具体来说,如果用户打开我的应用程序并将其关闭,AccessibilityService则不再需要。)
如果我AccessibilityService在不需要的时候运行,那就是在浪费设备的 RAM 和 CPU,如果可能的话,我想避免对我的用户这样做。
如何以编程方式启动和停止我的AccessibilityService?
请注意,我不是要求以编程方式启用或禁用AccessibilityServiceAndroid 的辅助功能设置;这只是在它已经启用时启动和停止它。
AccessibilityService)AccessibilityService使用以下方法禁用组件:
PackageManager.setComponentEnabledSetting(
accessibilityServiceName,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
0
);
Run Code Online (Sandbox Code Playgroud)
这杀死了整个应用程序,包括AccessibilityService. 此外,重新启动手机后,AccessibilityServiceAndroid 辅助功能设置中不再可见。(似乎需要重新启用该组件,然后重新启动手机才能使其再次显示。)
AccessibilityService使用以下方法禁用组件:
PackageManager.setComponentEnabledSetting(
accessibilityServiceName,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP
);
Run Code Online (Sandbox Code Playgroud)
这并没有阻止AccessibilityService.
停止AccessibilityService使用Context.stopService()和Service.stopSelf()。这些并没有停止服务,大概是因为操作系统绑定到它。
杀死AccessibilityService使用的过程Process.killProcess()。但是,该服务在重新启动并重新连接后不久,大概是因为操作系统绑定到它。
使用 取消注册可访问性事件AccessibilityService.setServiceInfo(new AccessibilityServiceInfo())。这会阻止服务获取可访问性事件,但服务仍会在后台运行。
这只是关于停止服务。我希望能够在服务停止后再次启动它。
取自文档的生命周期部分AccessibilityService:
无障碍服务的生命周期由系统独家管理,并遵循既定的服务生命周期。启动无障碍服务仅由用户在设备设置中明确打开服务触发。系统绑定到服务后,会调用
onServiceConnected(). 想要执行绑定后设置的客户端可以覆盖此方法。无障碍服务会在用户在设备设置中将其关闭或调用时停止
disableSelf()(在 Android 7.0 (API 24) 及更高版本中)。
| 归档时间: |
|
| 查看次数: |
7462 次 |
| 最近记录: |