我的应用启动了一项使用GPS跟踪位置的服务。 跟踪是使用应用程序创建的服务完成的,当应用程序关闭时,可以继续在后台运行。这工作正常,直到...... 问题是(我认为)当Android设备内存负载增加时,我认为服务被换出并崩溃。 有没有办法强制服务保持加载? - 我会假设没有,但如果有,那将会有所帮助。 提前谢谢。
答案 0 :(得分:2)
您可以使用startForeground
方法Service
中的方法来优先考虑。因此系统将首先销毁其他应用程序。
答案 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。