应该/可以在AccessibilityService中使用startForeground吗?

时间:2013-07-18 18:30:27

标签: android service accessibility accessibilityservice

AccessibilityService与普通服务在系统内存管理方面有何不同?

我要问的是:系统是否可以终止AccessibilityService以保存内存,如果是这样,当您转到“辅助功能设置”时,您会看到它是打开还是关闭?用户是否必须再次手动打开它?

使用startForeground帮助保持AccessibilityService活着吗?

在类似的问题中,重启后,我的AccessibilityService未被调用(永远不会调用onServiceConnected)。当我转到“辅助功能设置”时,服务会将其显示为已打开。我必须将其关闭并打开它才能再次工作。有什么想法吗?

2 个答案:

答案 0 :(得分:6)

您无需使用AccessibilityService的前台通知即可在后台继续运行。这是服务的一个特例。

如果崩溃,框架将尝试自动重启您的辅助功能服务。如果多次崩溃,每次重启都需要更长时间。这可能就是为什么您的服务似乎已启用,即使它未运行。

答案 1 :(得分:0)

看看这里:http://developer.android.com/guide/components/processes-and-threads.html

由于AccessibilityService确实是一个服务,它可以像任何其他服务一样被杀死。因为它应该是一个绑定服务,只要有一个Activity绑定它就会保持活着状态。如果你的Activity在onPause()或onStop()中没有解除绑定,那么它在恢复时仍会被绑定。这意味着不会调用onServiceConnected()。您仍然可以使用在onBind()调用中返回的IBinder。

另请阅读“附加说明”:http://developer.android.com/guide/components/bound-services.html#Binding

使用etForeground()有助于保持活着,为其提供最高优先级。