use*_*966 5 service android background alarmmanager locationmanager
设想:
长时间(即 12 小时)每 30 秒发布到服务器以在后台获取任何新数据。位置数据需要随之发送。
目前的实施情况;
服务等级;
IntentService 通过广播接收器将服务器响应发送回主服务类。
我尝试了几种不同的变体;
我尝试使用 Handler 和 runnable 来处理发布到服务器的计时机制,但是,当设备处于睡眠状态时,postDelay 时间从 2 分钟变为 7 分钟。
此外,尝试直接从警报管理器触发 IntentService,但无法使用最新的位置变量更改 PendingIntent 附加内容。
问题;
目前的实施方式是可行的吗?
沿着谷歌的 GCM 路线走会更有利吗?
如何大力测试服务类,特别是从操作系统终止服务类中恢复?
提前致谢。
为了避免操作系统终止您的服务,您必须通知用户您的服务是一项持续的服务,如http://developer.android.com/guide/components/services.html#Foreground中所述。
我设法使用 AlarmManager 和 WakeLock 让我的服务在后台每 2 分钟运行一次,如本答案中所述。即使设备处于睡眠状态,它也会每 2 分钟运行一次。只需将闹钟设置为重复即可
alarmMgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+5000, 60000 * ALARM_PERIOD_IN_MINUTES, alarmPendingIntent);
Run Code Online (Sandbox Code Playgroud)
而不是将其设置为时间。
| 归档时间: |
|
| 查看次数: |
5081 次 |
| 最近记录: |