无障碍服务和后台服务有什么区别?我什么时候应该互相使用?
2 回答
两者完全用于不同的目的:
后台服务- 除非您另外指定,否则您在应用程序中执行的大多数操作都在称为 UI 线程的特殊线程上运行在前台。这可能会导致问题,因为长时间运行的操作会干扰用户界面的响应能力。这会惹恼您的用户,甚至可能导致系统错误。Androind 框架允许您在后台线程中运行这些类型的操作。
可访问性- 许多 Android 用户具有不同的能力,需要他们以不同的方式与他们的 Android 设备进行交互。其中包括因视觉、身体或年龄相关限制而无法完全看到或使用触摸屏的用户,以及可能无法感知听觉信息和警报的听力损失用户。
无障碍服务在后台运行,并在触发 AccessibilityEvents 时接收系统的回调。此类事件表示用户界面中的某些状态转换,例如焦点已更改、按钮已被单击等。此类服务可以选择请求查询活动窗口内容的能力。无障碍服务的开发需要扩展这个类并实现它的抽象方法。
如果您认为用户在使用您的应用时需要特殊帮助,请使用辅助功能。将后台用于长时间运行的任务,以使您的 UI 保持简洁。
后台服务允许在 UI 不存在时执行(例如,当应用程序“关闭”时)。通过向用户显示一个长期存在的“前台”通知,它可以获得能够长期保持活动的“前台优先级”。“前台/后台”优先级发生在进程级别,而不是线程级别。后台服务不会提高UI 响应能力,因为它使用主/ui 线程与任何 Activity 一样多。任何其他线程都可以用来解决 UI 缺乏责任感。
无障碍服务是相同的,尽管它接收与用户交互相对应的特殊类型的事件,并且需要用户通过设置手动设置(不能以编程方式激活)。它不需要前台通知。