【问题标题】:How to set an AlarmManager to run every first day of the month?如何将 AlarmManager 设置为每月的第一天运行?
【发布时间】:2018-10-18 14:07:12
【问题描述】:

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

     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);
}

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

【问题讨论】:

    标签: android alarmmanager


    【解决方案1】:

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

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

    但在这种情况下,您不能提供intervalMillis,因为由于月份中的天数不同,间隔可能会有所不同。

    正如@Ya Si 所说,除了能够自动处理断电/重启情况的 AlarmManager 之外,还有其他方法可以设置警报。 如果您仍想使用 AlarmManager,请检查:Start AlarmManager if device is rebooted

    【讨论】:

      猜你喜欢
      • 2016-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 2020-10-02
      相关资源
      最近更新 更多