是否可以无限期地运行我的服务?

时间:2013-06-17 05:47:41

标签: android service background

我可以无限期地运行后台服务吗?如果我无限期地运行它,android会杀死我的服务吗? Facebook android应用程序如何在后台运行很长时间?请帮我了解一下。

3 个答案:

答案 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也会尽力重新启动它。