如何设置AlarmManager在每月的第一天运行?

时间:2018-10-18 14:07:13

标签: android alarmmanager

我想要一个Android警报管理器在每个月的第一天运行服务。我有以下代码:

     PersianCalendar persianCalendar = new PersianCalendar();
    persianCalendar.setTimeZone(TimeZone.getDefault());
   if( persianCalendar.getPersianDay()==1){

    Intent intent = new Intent(UsersActivity.this, AppsNetUsageReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 0, intent, 0);
    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
           alarmManager.set(AlarmManager.RTC, persianCalendar.getTimeInMillis(), pendingIntent);
}

如果设备关闭或其他原因阻止我的服务正常工作,如何保证我的服务成功运行?

1 个答案:

答案 0 :(得分:0)

您必须在收到前一个警报时设置下一个警报。

AlarmManager中有setRepeating(@AlarmType int type, long triggerAtMillis,long intervalMillis, PendingIntent operation)方法,可用于设置每小时或每15分钟重复一次的警报。

但是在这种情况下,您不能提供intervalMillis,因为时间间隔可能会因几个月中天数的不同而有所不同。

正如@Ya Si所说,除了AlarmManager可以自动设置电源关闭/重新启动案例外,还有其他设置警报的方法。 如果仍要使用AlarmManager,请检查:Start AlarmManager if device is rebooted