AlarmManager只有第一次准时第二次以及之后变得不准时

Jobernowl 2012-05-31 11:58:57

AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getService(context,0,new Intent(context,target),1);
am.setRepeating(AlarmManager.RTC_WAKEUP,calculateAlarm(starHour,startMinute),context).getTimeInMillis(), 3600000, pi);


我写了一个闹钟小程序 并且写了一个设置闹钟的方法 主要代码如上所示 我还写了一个计算下次闹钟的时间 经过打印确定计算出来的时间是正确的 比如我设置每天早上8点05分提醒起床 带一次到了早上8点05分任务确实准时执行了 在任务执行完后我又这是一个新的闹钟 时间是第二天早上8点05 经过测试 发现第二天闹钟时间不准确了 不知该怎么办 求各位帮忙
...全文
291 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
noscar 2012-10-06
  • 打赏
  • 举报
回复
兄弟,你的问题解决没有?我最近做一个东东也是这样,被ALARMER 折腾好久了。你是说系统原因,但是安装的正点闹钟又很正常,我都无语了。
Jobernowl 2012-06-12
  • 打赏
  • 举报
回复
罢了 可能是和系统有关吧
Jobernowl 2012-06-04
  • 打赏
  • 举报
回复
这个是那个方法
/**
* Given an alarm in hours and minutes, return a time suitable for
* setting in AlarmManager.
*/
static Calendar calculateAlarm(int hour, int minute,
Alarm.DaysOfWeek daysOfWeek) {

// start with now
Calendar c = Calendar.getInstance();
c.setTimeInMillis(System.currentTimeMillis());

int nowHour = c.get(Calendar.HOUR_OF_DAY);
int nowMinute = c.get(Calendar.MINUTE);

// if alarm is behind current time, advance one day
if (hour < nowHour ||
hour == nowHour && minute <= nowMinute) {
c.add(Calendar.DAY_OF_YEAR, 1);
}
c.set(Calendar.HOUR_OF_DAY, hour);
c.set(Calendar.MINUTE, minute);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);

int addDays = daysOfWeek.getNextAlarm(c);
if (addDays > 0) c.add(Calendar.DAY_OF_WEEK, addDays);
return c;
}
Jobernowl 2012-06-04
  • 打赏
  • 举报
回复
我把计算后的毫秒数用simpledateformat格式化打印出来看了 完全正确我那个是绝对时间 很好计算的 我没有算时间差 绝对时间 也就是 某年某月某日某时某分某秒 没有一个不是确定的 跟喝白开水一样好算
多鱼的夏天 2012-06-02
  • 打赏
  • 举报
回复
应该是calculateAlarm计算的毫秒数不正确
Jobernowl 2012-06-01
  • 打赏
  • 举报
回复
自己把帖子顶上去

80,493

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧