场景:
发布到服务器以在30秒内每隔30秒在后台获取任何新数据,即12小时.位置数据需要与此一起发送.
目前的实施;
服务类;
>位置监听器,间隔为30秒,设置经度和纬度值为两个局部变量
>警报管理器每隔30秒向广播接收器发出等待意图.
>广播接收器在附加内容中启动带有位置变量的IntentService.
> IntentService http发布位置并要求来自服务器的任何新数据.
> IntentService通过广播接收器将服务器响应发送回主服务类.
>服务类starts_sticky以确保 *** 作系统重新启动.
我尝试过几种不同的变化;
>我尝试使用Handler和runnable来处理发布到服务器的计时机制,但是当设备处于睡眠状态时,postDelay时间从2分钟变为7分钟.
>此外,尝试直接从警报管理器触发IntentService,但无法使用最新的位置变量更改PendingIntent附加功能.
问题;
>目前的实施方式是否可行?
>谷歌的GCM路线会更有利吗?
>你如何大力测试服务类,特别是从 *** 作系统中恢复杀死它?
提前致谢.
解决方法:
为避免 *** 作系统终止您的服务,您必须通知用户您的服务是正在进行的服务,如http://developer.android.com/guide/components/services.html#Foreground中所述.
我设法使用AlarmManager和WakeLock在后台每2分钟运行一次我的服务,如this answer所述.即使设备处于休眠状态,它每2分钟运行一次.只需将闹钟设置为重复即可
alarmMgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+5000, 60000 * ALARM_PERIOD_IN_MINUTES, alarmPendingIntent);
而不是将其设置为时间.
总结以上是内存溢出为你收集整理的Android:定期(每30秒)在后台发送位置数据,并向服务器询问新数据全部内容,希望文章能够帮你解决Android:定期(每30秒)在后台发送位置数据,并向服务器询问新数据所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)