根据应用程序状态停止和启动服务

And*_*rew 6 service android battery

我有一个跟踪用户位置的服务.当前,服务在应用程序启动时启动,在应用程序终止时停止.不幸的是,如果用户将应用程序保留在后台,则服务永远不会停止并耗尽电池电量.

当我的应用程序不在前台时,我希望服务停止.我希望Application类能让我覆盖onPause和onResume处理程序,但它没有它们.还有另一种方法可以实现这一目标吗?

Pet*_*yle 5

我还没有测试过这个,但看起来如果你使用Context#bindService()(而不是Context#startService()),服务应该在没有更多活动绑定时停止.(请参阅服务生命周期).

然后使用onPause()/ onResume()在每个活动中绑定/取消绑定服务.

或者,您可以在服务上添加一对方法,告诉它开始/停止侦听位置更新并从每个活动的onResume()/中调用它onPause().该服务仍将运行,但位置更新不会耗尽电池.


for*_*all 0

您应该重写Activity上的onPauseonResume方法。如果您有多个活动,您可能希望为它们拥有一个公共基类,并将开始/停止逻辑放入基类中。