Android-android休眠时,时间变化获取

发布于 2017-01-13 13:59:25 字数 386 浏览 1236 评论 1

我的程序想通过时间变化做一些预订的操作,本来使用android的一个广播Intent.ACTION_TIME_TICK可以实现我要的功能,这个广播就是每分钟的时间流失。但是我在实际的使用过程中发现一个问题,当android进入休眠后,CPU处于停止状态,大多程序都被处于挂起的状态。这个action我也就接收不到了。因此程序无法做预订的一些操作。但是想到,android手机在休眠后,再次唤醒,时间还是正常的,所以,我想知道,这些时间是如何变化的


我试了andev的方法,是可行的,进过14个小时,我仍在接受这个广播消息。我的广播接收器中监听了一个自定义的广播和一个Intent.ACTION_TIME_TICK的广播,发现,这2个广播一直能接受到,可见整个手机并没有进入休眠。需要改善下策略,否则真的太耗电了。谢谢andev

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浮生未歇 2017-02-23 15:19:41

Intent.ACTION_TIME_TICK是使用AlarmManager.RTC,在文档中是这么说的:

Alarm time in
System.currentTimeMillis() (wall clock
time in UTC). This alarm does not wake
the device up; if it goes off while
the device is asleep, it will not be
delivered until the next time the
device wakes up.

在sleep下是不发送的,可以用设置AlarmManager中使用RTC_WAKEUP

参考代码如下:

AlarmManager am = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent("REFRESH_THIS");
PendingIntent alarmIntent = PendingIntent.getBroadcast(getBaseContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar = Calendar.getInstance();
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1 , alarmIntent);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文