【问题标题】:Android repeating alarm in Broadcast ReceiverAndroid在广播接收器中重复警报
【发布时间】:2015-08-08 17:35:10
【问题描述】:

我的闹钟启动通知服务。 A 希望我的闹钟在每个月的第 7 天 14:00 触发

我的接收者:

public class AlarmReceiver extends BroadcastReceiver {
private AlarmManager alarmMgr;
private PendingIntent alarmIntent;

@Override
public void onReceive(Context context, Intent intent) {
    System.out.println("RECEIVER STARTED");
    if (checkForDay()) {
        alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        Intent intent1 = new Intent(context, AlarmService.class);
        alarmIntent = PendingIntent.getService(context, 0, intent1, 0);
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.HOUR_OF_DAY, 14);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        alarmMgr.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarmIntent);
        System.out.println("ALARM SET");
    } else
        System.out.println("ALARM NOT SET");
}

private boolean checkForDay() {
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    return calendar.get(Calendar.DATE) == 7;

}

我的接收器从 BOOT_COMPLETE 开始,并从 MainActivity onCreate() 中的广播开始; 但也有问题。

  1. 如果用户保持手机 24/7 开机会怎样
  2. 用户可以在 14:00 之后启动我的应用程序并立即触发警报 - 不想要它。仅限 14:00
  3. Uset 可能会忘记启动我的应用程序,并且根本不会触发警报

如果 setInexactRepeating() 不好,由于间隔,如何实现正确的每月重复警报。每个月都不一样?

【问题讨论】:

    标签: android broadcastreceiver alarmmanager


    【解决方案1】:

    案例 1:[如果用户保持手机 24/7 开机怎么办]

    在这种情况下,一切顺利。当第 7 天 14:00 闹钟响起时,您可以设置下一个第 7 天的闹钟

    案例 2:[用户可以在 14:00 之后启动我的应用程序并立即触发警报 - 不想要它。仅在 14:00]

    在这种情况下,只需添加一项检查以处理或不处理您需要在每个月的第 7 天 14:00 执行的逻辑

    案例3:[用户可能忘记启动我的应用程序,警报根本不会响]

    你可以使用重启事件,它可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多