Fla*_*dun 8 android alarmmanager android-alarms repeatingalarm
Alarm Manager的参考说明了这一点
如果指定的触发时间是过去的,则会立即触发警报.
我在申请中遇到了这个问题.这是我的警报管理器代码:
Intent myIntent = new Intent(getActivity(), DinnerAlarmReceiver.class);
pendingDinnerIntent = PendingIntent.getBroadcast(getActivity(), 0, myIntent, 0);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendar.set(Calendar.MINUTE, minute);
alarmManager.set(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), pendingDinnerIntent);
Run Code Online (Sandbox Code Playgroud)
这个问题有解决方法吗?
- - -编辑 - - -
我写了一些代码来估计警报的设定时间是否在当前时间之前.以上部分有相应的变化:
Calendar calendar = Calendar.getInstance();
long currentTime = calendar.getTimeInMillis();
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendar.set(Calendar.MINUTE, minute);
long setTime = calendar.getTimeInMillis();
Timestamp setTimestamp = new Timestamp(setTime);
Timestamp currentTimestamp = new Timestamp(currentTime);
if (setTimestamp.after(currentTimestamp))
{
alarmManager.set(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), pendingDinnerIntent);
}
else
{
}
Run Code Online (Sandbox Code Playgroud)
我的应该是什么alarmManager
来的情况下,setTimestamp
是前currentTimestamp
?
Mik*_* M. 23
您不需要创建Timestamp
s.你可以用你的Calendar
.
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendar.set(Calendar.MINUTE, minute);
if(calendar.before(Calendar.getInstance())) {
calendar.add(Calendar.DATE, 1);
}
alarmManager.set(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), pendingDinnerIntent);
Run Code Online (Sandbox Code Playgroud)
我还要提到的是,就KitKat而言,如果你的targetSdkVersion
年龄是19岁或以上,那么该AlarmManager#set()
方法并不准确.如果您希望闹钟在确切时间触发,则需要使用setExact*()
方法.
归档时间: |
|
查看次数: |
2377 次 |
最近记录: |