首页 > 解决方案 > 警报每秒钟都响起?

问题描述

我有一个功能可以每 15 分钟重复一次警报。

问题是它每秒都在发射。

我的主要活动中有这个:

 AlarmManager alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        Intent intentn = new Intent(context, AlarmReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intentn, 0);
        Calendar time = Calendar.getInstance();
        time.setTimeInMillis(System.currentTimeMillis());

        if(android.os.Build.VERSION.SDK_INT>=23) {
            alarmMgr.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,1000*900, pendingIntent);
        }
        else{
            alarmMgr.setExact(AlarmManager.RTC_WAKEUP, 1000*900, pendingIntent);
        }

我在我的 AlarmReceiver onReceive() 中重复了上面相同的操作,以便在它触发后再次设置它。

有什么想法有什么问题,我该怎么做才能让它正确重复?

标签: androidandroid-alarms

解决方案


首先,您正在设置闹钟而不添加当前时间。见下文:

...
alarmMgr.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, 1000*900, pendingIntent);
...
alarmMgr.setExact(AlarmManager.RTC_WAKEUP, 1000*900, pendingIntent);
...

应该改为

...
alarmMgr.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, time + 1000*900, pendingIntent);
...
alarmMgr.setExact(AlarmManager.RTC_WAKEUP, time + 1000*900, pendingIntent);
...

其次,有一个功能可以完全按照我认为您在此处尝试完成的操作(设置重复警报)。见setRepeating()


推荐阅读