使用请求代码设置多个警报

时间:2018-06-05 16:14:13

标签: java android alarmmanager

我想使用请求代码设置多个警报。 我为每个警报提供了不同的请求代码值,但alarmManager仍然只执行最后设置的警报。 这是我现有的代码:

public void Alarm(){
        Intent intent = new Intent(MainActivity.this, BroadCast.class);
        alarmID = (int)(System.currentTimeMillis() % 1000000000); //for request code

        PendingIntent sender = PendingIntent.getBroadcast(
            MainActivity.this, alarmID, intent, 0);

        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
                     calendar.get(Calendar.DATE),hours,mins,0);
        AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

        am.setInexactRepeating(AlarmManager.RTC_WAKEUP, 
                               calendar.getTimeInMillis(),am.INTERVAL_DAY, sender);
    }

2 个答案:

答案 0 :(得分:0)

尝试setRepeating而不是setInexactRepeating,你会得到重复的警报。

am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
                + (5 * 1000),5 * 1000, pendingIntent);

答案 1 :(得分:0)

从Android 5.1(API版本22)开始,重复警报的最短时间为1分钟。如果您需要在一分钟内完成工作,只需直接设置闹钟,然后从该闹钟的处理程序中设置下一个闹钟等。如果您需要在5秒钟内完成工作(例如),请将其发布到处理程序而不是使用AlarmManager。

这里有好的文件:

https://en.proft.me/2017/05/7/scheduling-operations-alarmmanager-android/