AlarmManager Android 每天

Posted

技术标签:

【中文标题】AlarmManager Android 每天【英文标题】:AlarmManager Android Every Day 【发布时间】:2011-06-01 13:21:09 【问题描述】:

我正在尝试制定时间表。

它应该在每天下午 1 点或 2 点运行...

目前我只能让它每 10 秒或 10 分钟运行一次...

Intent myIntent = new Intent(androidAlarmService.this, MyAlarmService.class);
pendingIntent = PendingIntent.getService(AndroidAlarmService.this, 0, myIntent, 0);

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 10);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

Toast.makeText(AndroidAlarmService.this, "Start Alarm", Toast.LENGTH_LONG).show();

谢谢

【问题讨论】:

【参考方案1】:

每天都会报警。

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,  AlarmManager.INTERVAL_DAY , pendingIntent);

【讨论】:

set() 只会触发一次。 setRepeating() 每天都会触发。 -1 此代码不正确(至少从 SDK 2.1 开始)。 AlarmManager.setRepeating 接受 4 个参数,而不是 3 个。【参考方案2】:

此代码将在每天下午 1 点或 2 点运行 Intent

Calendar calendar = Calendar.getInstance();

calendar.set(Calendar.HOUR_OF_DAY, 13); // For 1 PM or 2 PM
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
PendingIntent pi = PendingIntent.getService(context, 0,
            new Intent(context, MyClass.class),PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                                AlarmManager.INTERVAL_DAY, pi);

【讨论】:

您可能需要添加 calendar.add(Calendar.DAY_OF_YEAR, 1);避免立即触发警报。 你也可以添加 calendar.set(Calendar.MILLISECOND, 0);更准确地说:) 当应用程序进入后台/关闭/暂停时也会运行吗? @MarioGalván 是的,直到警报被取消,或者设备重新启动并且此代码不再执行 我已经尝试过了,它工作正常,但几天后它就停止了,应用程序停止触发 BroadcastReceiver 你知道发生了什么事情的任何人

以上是关于AlarmManager Android 每天的主要内容,如果未能解决你的问题,请参考以下文章

使用 AlarmManager 设置重复通知 - Android

android AlarmManager 在凌晨12点 手机实机无法达成的问题?

android app被杀死 alarmmanager能不能唤醒

Android - AppWidgets、AlarmManager 和 AsyncTask

Android取消所有alarmmanager

Android定时器AlarmManager