我需要收集GPS数据,将其保存到数据库,然后每分钟发送到后端。 我只是想确保Doze模式不会搞砸。
我们假设我启动了前台服务并在那里实施onLocationChanged
回调。
为了确保Doze允许使用GPS /互联网,我是否必须在前台服务中完成所有这些(收集/存储/发送)?
如果我想在其他地方存储/发送数据,例如在BroadcastReceiver
中,我如何确定我的BroadcastReceiver
已准备好处理数据并且没有睡着?
Android M中存在一个错误,它使前台服务受到打盹模式的影响: https://stackoverflow.com/a/37869501/3210556
可能的解决方法是在单独的流程中启动前台服务。
假设应用程序中有前台服务,究竟什么不受打瞌睡的影响?
谢谢。
答案 0 :(得分:0)
如果您的手机进入Doze
,所有内容都会进入睡眠状态(GPS,闹钟,互联网等)并在某些时候被推迟到维护窗口(取决于用户拥有的Android版本)。
如果您的应用需要在特定时间执行某些操作,您可以向white list申请。您可以查看白名单here的有效使用案例,听起来您的情况可能有效