我的应用程序启动了一项使用 GPS 跟踪位置的服务。跟踪是使用应用程序创建的服务完成的,当应用程序关闭时,该服务可以继续在后台运行。这工作正常,直到......问题是(我认为)当android设备内存负载增加时,我认为服务被换出并崩溃。有没有办法强制服务保持加载?- 我认为不是,但如果有的话,知道会很有帮助。提前致谢。
问问题
777 次
2 回答
3
您可以使用startForeground
方法Service
来确定优先级。因此,系统将首先破坏其他应用程序。
于 2013-07-11T12:59:26.660 回答
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 将在 Service 终止后重新启动时再次调用。请注意,对于重新启动,intent 参数将为空。如果您再次需要原始意图,请使用 START_REDELIVER_INTENT。
于 2013-07-11T13:40:47.207 回答