重启后的Android AlarmManager

我有一组警报,我需要在重启后保留。 我尝试过在启动接收器上使用,但它们不会重新启动。 我不确定我是否理解启动接收器以及如何重新启动所有警报。 我已经有一个接收器用于我的通知,但不知道我是否可以使用相同的接收器或我是否需要一个新接收器?

谁能指点我任何好的教程或帮助我?

干杯

代码:

DatabaseHandler db = new DatabaseHandler(this); List alarms = db.getAllAlarms(); AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); for (UAlarm ua : alarms) { String programme = ua.getTitle(); String startTime = ua.getStart(); String endTime = ua.getEnd(); String nowPlaying = ua.getChannel(); db.addAlarm(new UAlarm(programme, startTime, endTime, nowPlaying, "")); final UAlarm ut = new UAlarm(); ut.setTitle(programme); ut.setStart(startTime); ut.setEnd(endTime); ut.setChannel(nowPlaying); ut.setId(db.getLastEntered()); String [] bla = startTime.split(":"); int hour = Integer.parseInt(bla[0].trim()); int minute = Integer.parseInt(bla[1].trim()); minute -= 2; Calendar cal = Calendar.getInstance(); cal.set(Calendar.HOUR_OF_DAY, hour); cal.set(Calendar.MINUTE, minute); Intent intenta = new Intent(this, NotificationMenu.class); String name = programme; intenta.putExtra("name", name); intenta.putExtra("id", db.getLastEntered()); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, ua.getId(), intenta, PendingIntent.FLAG_CANCEL_CURRENT); am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent); } } 

NotificationMenu是通知,这就是我使用AlarmManager的原因

    Related of "重启后的Android AlarmManager"

    我不确定我是否理解启动接收器以及如何重新启动所有警报。

    只需调用您的代码在setRepeating()上调用setRepeating() (或其他)。

    例如,在此示例项目中 , PollReceiver设置为接收BOOT_COMPLETED 。 在onReceive() ,它重新安排警报:

     package com.commonsware.android.schedsvc; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.SystemClock; public class PollReceiver extends BroadcastReceiver { private static final int PERIOD=5000; @Override public void onReceive(Context ctxt, Intent i) { scheduleAlarms(ctxt); } static void scheduleAlarms(Context ctxt) { AlarmManager mgr= (AlarmManager)ctxt.getSystemService(Context.ALARM_SERVICE); Intent i=new Intent(ctxt, ScheduledService.class); PendingIntent pi=PendingIntent.getService(ctxt, 0, i, 0); mgr.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + PERIOD, PERIOD, pi); } }