【问题标题】:Android - Alarm manager runs every dayAndroid - 警报管理器每天运行
【发布时间】:2016-10-09 15:01:14
【问题描述】:

我不明白出了什么问题,但我的闹钟每天都会响起,即使我硬编码天数,我也不知道发生了什么......

Intent notificationIntent = new Intent(AddTask.this,CustomBroadcastReceiver.class);
notificationIntent.putExtra(Intent.EXTRA_UID,newTaskId);
PendingIntent pendingIntent = PendingIntent.getBroadcast(AddTask.this, newTaskId, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager)getSystemService(getApplicationContext().ALARM_SERVICE);

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.DAY_OF_WEEK,2);

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY * 7, pendingIntent);

今天是星期天,所以天数是 1,我写了 calendar.set(Calendar.DAY_OF_WEEK,2);并且警报刚刚被触发,因为我使用了这一刻的时间和分钟......我是否设置日期编号 1 2 3 4 5 或 6 或者即使我使用相同 ID 制作多个警报管理器并且每个都包含其他每天触发的日子

【问题讨论】:

    标签: android


    【解决方案1】:

    为什么需要这条线?

    calendar.setTimeInMillis(System.currentTimeMillis());
    

    另外,android开发documentation推荐使用

    setInexactRepeating(int type, long triggerAtMillis, long intervalMillis, PendingIntent operation);
    

    编辑: 我怀疑没有为创建警报设置意图,因此它没有正确创建警报。 也许这会起作用:

    Intent intent = new Intent(this, AlarmReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
    intent, PendingIntent.FLAG_ONE_SHOT);
    
    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
    //set repeating alarm here
    

    我希望能回答这个问题。

    【讨论】:

    • 我没有将闹钟日期设置为 3,今天的数字是 1,它只是触发了。我已经按照你说的改变了事情
    • @uplnypan 你找到解决方案了吗?
    • 不,我很难过...我不知道怎么了,我只想在给定的时间和星期几永远重复闹钟,直到闹钟被删除。
    【解决方案2】:

    好吧,我已经解决了这个问题,对于每个想要创建这样的警报应用程序的人 > 您设置触发警报的时间和小时以及星期几,它的工作原理如下:如果今天是您选择你只是用这个设置闹钟:

    calendar.set(Calendar.HOUR_OF_DAY, hour);
    calendar.set(Calendar.MINUTE, minute);
    

    但如果您选择的日期不是今天的日期,则您必须选择最近的日期,然后如上所述设置额外的小时和分钟。

    这是让它工作的唯一方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-27
      相关资源
      最近更新 更多