我正在尝试开发一个Android应用程序,其中包括使用位置服务来获取用户位置并将其发送到远程服务器。用户可以根据自己的意愿打开和关闭此功能,但只要它打开,它就会定期获取用户位置(可能每30秒,当然还不知道)。此外,当它打开时,即使应用程序关闭,它也必须继续跟踪用户。
到目前为止,我已经考虑了两个选项:
选项1 - 使用Service
,调用startForeground
以确保Android不会将其终止(粘性通知对我来说不是问题)并使用{ {1}}具有上述间隔,但这看起来效率相当低,因为服务大部分时间都没有做任何事情,我的意思是,每30秒调用一次监听器,将位置发送到服务器并且服务本身会花费接下来的29.9秒或等待下一个位置的任何东西。
选项2 - 做了一些研究,我看到一些使用LocationListener
触发某些后台服务的方法(如post中所见),但我是关注使用通常(每30秒)可能不利于电池和系统一般性能的警报(在Android开发者指南的this页面的代码片段中,有一条评论说“希望您的警报会有一个频率低于30分钟“)。
也许还有另一种选择,我还没有想过,或者可能有一种方法可以让选项1的服务暂停一段时间或类似的东西。最重要的是,我正在寻找不影响性能的方法,消耗最少量的电池,并且最不可能被Android杀死。
欢迎任何帮助和/或建议。