【问题标题】:Can accessibility service be stopped or killed?无障碍服务可以停止或终止吗?
【发布时间】:2014-10-10 14:21:56
【问题描述】:

我编写了一个无障碍服务,我希望该服务在收到无障碍事件后停止/终止(即在方法 onAccessibilityEvent 中)。这可以做到吗?我尝试使用如下的 kill 进程来杀死它,但它不起作用。

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

我已在 AndroidManifest.xml 中授予以下权限

<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />

我知道无障碍服务不能以编程方式启动,但也不能停止/终止吗?

【问题讨论】:

标签: android android-service accessibility android-a11y


【解决方案1】:

无障碍服务无法在不自动重启的情况下将自己从启用的服务列表中删除或终止自己的进程,但您可以调用AccessibilityService.setServiceInfo(new AccessibilityServiceInfo()) 来有效地关闭您的服务。

调用 AccessibilityManager.isEnabled() 仍将返回 true,但您的服务不会接收事件。

【讨论】:

  • 感谢 Alanv 的回复。您的回复似乎回答了我的问题,但我唯一担心的是该服务在不执行任何任务时正在运行。此外,当手机重新启动时,无障碍服务似乎又重新启动了。关于在手机重启时我们如何避免重启此服务的任何想法?
  • 可以提示用户禁用该服务。有一些非常巧妙的方法可以完全禁用该服务(例如禁用该组件),但它们会带来比其价值更多的麻烦。
【解决方案2】:

在 Android 7.0 (API 24) 中,您可以在 AccessibilityService 上调用 disableSelf() 来禁用该服务,这也会停止它。

【讨论】:

  • 我正在使用它,但它不起作用。你能解释一下为什么吗?
猜你喜欢
  • 2012-03-12
  • 1970-01-01
  • 2020-11-24
  • 2012-07-30
  • 2021-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多