我可以无限期地运行后台服务吗?如果我无限期地运行它,android会杀死我的服务吗?Facebook android应用程序如何长时间在后台运行?请帮我了解一下。
3 回答
您可以使用这些功能:
1)重启后自动重启服务(重启后启动意图)
2)粘性服务模式(http://developer.android.com/reference/android/app/Service.html#START_STICKY)
这些功能都有助于让您的服务尽可能始终启动。
如果内存不足,Android 会终止您的服务,但您可以做一些事情来从中恢复。
您可以尝试的第一件事是使用前台服务,前台服务是高优先级的服务,除非完全必要,否则不会被杀死(请注意,这些服务会增加电池消耗)。您可以在此处找到使用与旧设备兼容的示例,否则您只需在服务中调用 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;
}
根据您的需要使用一种或另一种。
希望能帮助到你 :)
没有办法绝对保护服务不被杀死。
如果你START_STICKY
从中返回onStartCommand()
,那么即使 Service 被杀死,android 也会在资源空闲时尽力重新启动它。