3

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

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

使用 startForeground 是否有助于保持 AccessibilityService 的活力?

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

4

2 回答 2

7

您不需要使用前台通知来让 AccessibilityService 保持在后台运行。这是服务的一个特例。

如果它崩溃,该框架将尝试自动重新启动您的无障碍服务。如果它多次崩溃,则每次重新启动需要更长的时间。这可能就是您的服务似乎已启用的原因,即使它没有运行。

于 2013-08-21T07:33:12.480 回答
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() 有助于保持它的活力,给予它最高的优先级。

于 2013-07-19T18:57:22.537 回答