我不明白为什么这个闹钟会在重启时响起……我在这里提前7天设置了它-
Intent intent = new Intent(MainActivity.this, Reminder.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
MainActivity.this, 1, intent, 1);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
try {
am.cancel(pendingIntent);
} catch (Exception e) {
System.out.println("Derp");
}
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, 7);
long time = calendar.getTimeInMillis();
am.set(AlarmManager.RTC_WAKEUP, time,
pendingIntent);这是我的清单,我将警报设置为在重启时停留-提醒是接收警报的类-
<receiver android:name="com.practicum.notifications.Reminder" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver> 发布于 2015-06-18 22:09:32
默认情况下,当设备关闭时,所有告警都会取消。为了防止这种情况发生,您可以将应用程序设计为在用户重新启动设备时自动重新启动重复的警报。这确保了AlarmManager将继续执行其任务,而无需用户手动重新启动警报。
您必须在启动接收器中再次手动重置警报
public class SampleBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
// Set the alarm here.
}
}发布于 2015-06-18 22:13:06
当你关闭Android设备的电源时,所有的警报都会被关闭。
您需要调用setRepeating方法
public class AlarmReceiver extends BroadcastReceiver {
private static final int PERIOD=5000;
@Override
public void onReceive(Context ctxt, Intent i) {
scheduleAlarms(ctxt);
}
static void scheduleAlarms(Context ctxt) {
AlarmManager am = (AlarmManager) ctxt.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(ctxt, YourService.class);
PendingIntent pi = PendingIntent.getService(ctxt, 0, i, 0);
mgr.setRepeating(AlarmManager.ELAPSED_REALTIME,
SystemClock.elapsedRealtime() + PERIOD, PERIOD, pi);
}
}从CommonsWare检查this answer。
发布于 2015-06-22 06:35:28
为了便于将来参考,我误解了接收启动完成操作的工作原理。我在我的两个receiver类中都有intent过滤器,所以它们都在运行,而我需要一个新的broadcastreceiver类上的intent过滤器来重置我的警报管理器。
https://stackoverflow.com/questions/30917534
复制相似问题