服务是否自动启动?

时间:2012-05-19 09:02:45

标签: android

我有一个由startService启动并与BIND_AutoCreate绑定的服务,我希望我的服务在android为低内存杀死时自动运行,我该如何植入?

感谢

2 个答案:

答案 0 :(得分:0)

您必须为ACTION_DEVICE_STORAGE_OK注册广播接收器,这表示设备上的内存不足情况已不再存在。在onReceive()方法中检查您的服务是否已停止,请启动它。

当设备从低内存状态(内部存储器)恢复时,将广播DEVICE_STORAGE_OK操作。我认为这是一个完美的事件,您可以检查您的服务是否在系统内存恢复期间被杀死,并在被杀死时启动它。

请阅读documentation here

答案 1 :(得分:0)

如果服务是由于 BIND_AUTO_CREATE 绑定而创建的,那么如果它没有绑定任何活动,它将被停止。

根据文档(service lifecycle),您既可以显式启动服务,也可以在启用自动创建标志的情况下绑定。

如果您将服务显式启动为STICKY(在其* onStartCommand *方法中返回START_STICKY,只要系统有更多资源,它就会自动重新启动。