[英]Can my AlarmManager fire the first alarm, when the set time is reached, not after the first repeating?
对于我的应用程序,我想在午夜和每隔一个午夜定期发出警报以重置一些变量。 我尝试了警报管理器来实现这一点。 警报是否有可能在它第一次到达午夜时触发,而不仅仅是在接下来的午夜? 我的实际代码正在运行,但不是我想要实现的。 我现在将时间和重复时间设置为 60 秒以进行测试。
在我的日志输出中,我得到例如:
那么是否可以在到达设定时间的第一时间直接触发警报? 或者有人有解决方法或任何提示或提示我如何实现吗?
我设置闹钟的功能
public void midnightAlarm() {
AlarmManager alarmMgr;
PendingIntent alarmIntent;
alarmMgr = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, MidnightAlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 15);
calendar.set(Calendar.MINUTE, 15);
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
1000 * 60 , alarmIntent);
}
我的接收者类:
public class MidnightAlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
writeToFile("ALARM");
//reset my Variables
}
}
public void midnightAlarm() {
AlarmManager alarmMgr;
PendingIntent alarmIntent;
alarmMgr = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, MidnightAlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
// Set the alarm to start at 8:30 a.m.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
alarmMgr.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarmIntent);
}
接收者
public class MidnightAlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
GlobalVariables.writeToFile("ALARM");
midnightAlarmREDO(context);
}
public void midnightAlarmREDO(Context context) {
AlarmManager alarmMgr;
PendingIntent alarmIntent;
alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, MidnightAlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
// zeit neu berechnen
alarmMgr.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() +
60 * 1000, alarmIntent);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.