Android服务中断

时间:2011-09-06 19:16:51

标签: android service

我正在开发一个位置跟踪应用。我有应用程序的机制,可以定期检测服务中的位置变化。

我的服务一直运行,这是我想要的,但偶尔我发现服务已经停止。在我的清单中,我在我的主要活动上设置android:configChanges="orientation|keyboardHidden",因此每次方向更改时都不会重新创建,但我是否需要为每个活动和服务执行此操作?

此外,可能是操作系统终止了我的服务。在这种情况下,是否有办法强制系统忽略我的服务或在一定时间后自动重启服务?

谢谢!

1 个答案:

答案 0 :(得分:2)

  

我的服务一直运行,这就是我想要的

您的用户可能不同意。

  

但我是否需要为每项活动和服务执行此操作?

您可能不应该为任何组件执行此操作。这主要是针对UI过于复杂而无法在新活动(例如,某些游戏,视频回放)中成功重新呈现或者活动也被锁定到特定方向的情况。无论如何,服务都没有android:configChanges属性。

  

可能是操作系统终止了我的服务

操作系统将关闭泄露的服务,例如你的服务,以防止电池过度耗尽。

  

有没有办法迫使系统忽视我的服务

您可以使用startForeground()

  

或在设定的分钟数后自动重启服务?

START_STICKY返回START_REDELIVER_INTENT(或可能是onStartCommand())。

更好的方法是重新考虑你的方法。保持位置跟踪 - 特别是GPS - 是一个重要的电池消耗。应用程序相当少,应该在后台持续监视位置。如果您经常需要经常进行位置修复(例如,每15分钟一次),请使用AlarmManager启动服务以获得修复,然后让服务调用stopSelf()消失,直到下一次报警。