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    经过测试 发现第二天闹钟时间不准确了  不知该怎么办 求各位帮忙

解决方案 »

  1.   

    应该是calculateAlarm计算的毫秒数不正确
      

  2.   

    我把计算后的毫秒数用simpledateformat格式化打印出来看了    完全正确我那个是绝对时间  很好计算的  我没有算时间差   绝对时间 也就是  某年某月某日某时某分某秒   没有一个不是确定的  跟喝白开水一样好算
      

  3.   

    这个是那个方法 
    /**
         * 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;
        }
      

  4.   

    兄弟,你的问题解决没有?我最近做一个东东也是这样,被ALARMER 折腾好久了。你是说系统原因,但是安装的正点闹钟又很正常,我都无语了。