设想:
长时间(即 12 小时)每 30 秒发布到服务器以在后台获取任何新数据。位置数据需要与此一起发送。
当前实施;
服务等级;
- 间隔为 30 秒的位置侦听器,将经度和纬度值设置为两个局部变量
- 警报管理器每 30 秒向广播接收器触发一次挂起的 Intent。
- 广播接收器启动一个 IntentService,其中包含附加的位置变量。
- IntentService http 发布位置并从服务器请求任何新数据。
IntentService 通过广播接收器将服务器响应发送回主服务类。
- 服务类 starts_sticky 以确保操作系统重新启动。
我尝试了几种不同的变体;
我尝试使用 Handler 和 runnable 来处理发布到服务器的计时机制,但是,当设备处于睡眠状态时,postDelay 时间从 2 分钟变为 7 分钟。
此外,尝试直接从警报管理器触发 IntentService,但无法使用最新的位置变量更改 PendingIntent 额外内容。
问题;
当前的实施是否可行?
沿着谷歌的 GCM 路线走会更有益吗?
您如何大力测试服务类,尤其是从操作系统杀死它的恢复方面?
提前致谢。