具有固定日期和重复性的Android报警管理器

时间:2014-06-24 12:06:53

标签: android

如何创建一个AlarmManger,可以在固定的日期和时间调用,这也可以重复连续

2 个答案:

答案 0 :(得分:5)

不幸的是,AlarmManager上用于重复任务的任何选项都不允许这样的精细控制。您最好的方法是在每次报警时,重新安排下个月的报警。

PendingIntent pendingIntent = // set here your action
Calendar calendar = // set this guy to be the next 5th day
AlarmManager am = // get reference to the manager
am.set(RTC, calendar.getTimeInMillis(), pendingIntent);

在此Pending intent操作中,您重复代码。例如,假设您要发布BroadcastReceiver

onReceive(Context context, Intent intent){
    Calendar calendar = // set this guy to be the next 5th day
    AlarmManager am = // get reference to the manager
    am.set(RTC, calendar.getTimeInMillis(), pendingIntent);    
}

设置calendar对象很简单:

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DAY, 5);

答案 1 :(得分:1)

我刚刚读了一个很好的答案。

代码是 -

Calendar cal=Calendar.getInstance();
cal.set(Calendar.MONTH,5);
cal.set(Calendar.YEAR,2012);
cal.set(Calendar.DAY_OF_MONTH,11);

cal.set(Calendar.HOUR_OF_DAY,16);
cal.set(Calendar.MINUTE,10);
cal.set(Calendar.SECOND,0);

Intent _myIntent = new Intent(getApplicationContext(), ReceiverClass.class);

PendingIntent _myPendingIntent = PendingIntent.
getBroadcast(getApplicationContext(), 123, 
_myIntent, PendingIntent.FLAG_UPDATE_CURRENT| Intent.FILL_IN_DATA);

AlarmManager _myAlarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);

//_myAlarmManager.set(AlarmManager.RTC_WAKEUP, 
System.currentTimeMillis() + (10 * 1000), _myPendingIntent);
_myAlarmManager.set(AlarmManager.RTC_WAKEUP, 
cal.getTimeInMillis(), _myPendingIntent); 

android-alarm-setting-with-specific-date中解释了这一点。