2015-01-17 88 views
4

我设置了每天重复的报警。 但它会有几秒或几分钟的错误。 我怎样才能让它更准确?每天准确地重复报警(报警管理器)

PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), notificationId, myIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
    AlarmManager alarmManager = (AlarmManager)getActivity().getSystemService(Context.ALARM_SERVICE); 
    Calendar calendar = Calendar.getInstance(); 
    calendar.set(Calendar.HOUR_OF_DAY, 12); 
    calendar.set(Calendar.MINUTE, 30); 
    long startUpTime = calendar.getTimeInMillis(); 
    if (System.currentTimeMillis() > startUpTime) { 
     startUpTime = startUpTime + 24*60*60*1000; 
    } 
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startUpTime, 24*60*60*1000 , pendingIntent); 
+0

是否'myIntent'指向一个'WakefulBroadc astReceiver'? – CommonsWare

回答

2

尝试添加

calendar.set(Calendar.SECOND,00); 

和改变

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startUpTime, 24*60*60*1000 , pendingIntent); 

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, 
      startUpTime, AlarmManager.INTERVAL_DAY, pendingIntent); 
+0

它的作品!谢谢你回答=) –

+0

它应该重复每一天? –

0
Intent myIntent = new Intent(ThisActivity.this , NotifyService.class);  
AlarmManager alarmManager = (AlarmManager) Context.getSystemService(Context.ALARM_SERVICE); 
PendingIntent pendingIntent = PendingIntent.getService(ThisActivity.this, 0, myIntent, 0); 
Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.HOUR_OF_DAY, 12); 
calendar.set(Calendar.MINUTE, 00); 
calendar.set(Calendar.SECOND, 00); 
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000, pendingIntent);