我正在编写一个使用location.LocationManager和LocationListener来接收GPS位置更新的Android应用程序。应用程序更新MapActivity上的位置,并将协调员发送到宁静的Web服务。即使MapActivity对用户不可见,Web服务也需要接收位置更新。
目前我在app.Application中正在做所有事情(除了UI),因为即使MapActivity不可见,它也会保持活动状态。但是,我读过的所有文档都表明app.Application用于存储状态而不是执行更多的任务。我尝试过使用app.Service,但它似乎过于复杂(生命周期,绑定,解除绑定)并且存在许多内存泄漏问题。我无法找到任何明确禁止从app.Application执行这些任务的文章或文档,所以我想知道这种方法是否有任何问题?
编辑:感谢您的回复,看起来我将不得不花费更多时间来搞清楚app.Service
答案 0 :(得分:2)
你应该选择服务。我认为Application的生命周期绑定到当前正在运行的任何组件。我猜想如果没有运行任何应用程序或服务或其他什么,当其他地方需要资源时,进程监视器可以随意销毁你的应用程序。您可能会发现您的代码有时会运行,但您会遇到意外的崩溃。
通常最好使用Android为不同组件规定的模型
答案 1 :(得分:0)
一般来说,我认为使用应用程序是可以的:我已经广泛使用它。我要说的主要复杂因素是唯一的生命周期回调是onCreate
:使用Service
您至少可以选择使用onDestroy
回调彻底关闭它。
我承认,Service
的生命周期可能有点令人困惑。如果Application对象为你工作,我就不会失去它的睡眠。