当应用在后台时,Android服务已停止

时间:2013-07-11 12:56:03

标签: java android memory-management service

我的应用启动了一项使用GPS跟踪位置的服务。 跟踪是使用应用程序创建的服务完成的,当应用程序关闭时,可以继续在后台运行。这工作正常,直到...... 问题是(我认为)当Android设备内存负载增加时,我认为服务被换出并崩溃。 有没有办法强制服务保持加载? - 我会假设没有,但如果有,那将会有所帮助。 提前谢谢。

2 个答案:

答案 0 :(得分:2)

您可以使用startForeground方法Service中的方法来优先考虑。因此系统将首先销毁其他应用程序。

http://developer.android.com/reference/android/app/Service.html#startForeground(int,%20android.app.Notification)

答案 1 :(得分:0)

将您的服务标记为前景组件将确保它不会在极端情况下终止,但您会损害Android管理其资源的能力。

另一种选择是覆盖onStartCommand事件处理程序以执行服务执行的代码。此方法由startService调用,并且当运行时重新启动服务时(Android可以在再次获得足够的资源时自动重新启动服务)。在这里,您还可以指定重新启动行为。

@Override public int onStartCommand(Intent intent, int flags, int startId)
{
    startBackgroundTask(intent, startId);  //implement this method, doing processing on a new Thread
    return Service.START_STICKY;
}

使用START_STICKY意味着当服务在终止后重新启动时将再次调用onStartCommand。请注意,对于重新启动,intent参数将为null。如果您再次需要原始意图,请使用START_REDELIVER_INTENT。