android - AlarmManager 不会在每天凌晨 2 点设置闹钟
问题描述
我希望 AlarmManager 每天凌晨 2 点设置闹钟......所以setAlarm
只有在有人第一次打开应用程序时才会调用下面的内容。我已经添加alarmManager.setRepeating
,以便它每天发生。
public class AlarmUtil {
public static void setAlarm(Context context) {
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
if (alarmManager != null) {
long start = System.currentTimeMillis();
Intent in = new Intent("ALARM_RECEIVER");
PendingIntent pi = PendingIntent.getBroadcast(context, 0, in, PendingIntent.FLAG_CANCEL_CURRENT);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.HOUR, 2);
calendar.set(Calendar.AM_PM, Calendar.AM);
DateFormat format = new SimpleDateFormat("MMMM dd , yyyy HH:mm:ss", Locale.ENGLISH);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);
}
}
}
下面的课程是每天凌晨 2 点应该调用的内容,无论应用程序处于活动状态还是非活动状态。
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
context.startService(new Intent(context, AlarmService.class));
}
但是我的问题是上面的 AlarmReceiver 每 30 秒被调用一次,或者有些随机发生,但发生了很多次,而我希望它每天只被调用一次。我不明白我哪里错了?
解决方案
推荐阅读
- reactjs - 删除已编辑的输入并在当前输入中更新它
- jdbc - 为什么成功的 UPDATE 返回 -1 行会受到影响?
- php - 动态选择框名称作为表值
- python - 使用 Python 从简历(.Docx、.Doc、PDF)中提取粗体文本
- jhipster - Angular 2 中的 Typeahead 实现
- android - Android sdk mssing、过期或损坏
- java - 当数字是分数时使用 Java 找到数字的完美 pth 幂
- python-3.x - Python _init_.py
- ios - 检查是否从 UITableViewSection 的每个部分中选择了一个单元格?
- android - Volley JsonObject 请求(方法获取)不起作用