我可以无限期地运行后台服务吗?如果我无限期地运行它,android会杀死我的服务吗? Facebook android应用程序如何在后台运行很长时间?请帮我了解一下。
答案 0 :(得分:4)
您可以使用以下功能:
1)重启后自动重启服务(Start intent after Reboot)
2)粘性服务模式(http://developer.android.com/reference/android/app/Service.html#START_STICKY)
这些功能都有助于让您的服务尽快启动。
答案 1 :(得分:3)
如果内存耗尽,Android会终止您的服务,但您可以做一些事情从中恢复。
您可以尝试的第一件事是使用前台服务,前台服务是一种高优先级服务,除非完全必要,否则不会被杀死(请注意,这些服务会增加电池消耗)。您可以找到与旧设备兼容的示例here,否则您只需要在服务中调用startForeground。
你可以做的另一件事是在你的服务中使用一些标志,当它被操作系统杀死时重新启动它。您可以使用2个不同的标志(取决于您要重现的行为)。
START_STICKY会以空意图重新启动您的服务,因此每当您必须恢复运行服务所需的数据时。
START_REDELIVER_INTENT在这种情况下,您的服务将使用最后的意图信息重新启动(当您需要不同的行为时,可能会使用不同的信息多次运行您的服务)。
标志可以按如下方式使用:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//Do your service work
return START_STICKY; //or return START_REDELIVER_INTENT;
}
根据您的需要使用其中一种。
希望有所帮助:)
答案 2 :(得分:0)
没有办法绝对保护服务不被杀死。
如果你从START_STICKY
返回onStartCommand()
,那么即使Service被杀了,当资源空闲时,android也会尽力重新启动它。