如何在最近的一小时内启动AlarmManager?例如,当用户点击按钮并且时间是12:32时,我想在13:00开始服务,然后每小时重复一次,我尝试了这段代码,但它不起作用,它只在一小时后启动AlarmManager,因此,如果时间是12:32,它将在13:32开始服务。
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, cal.get(Calendar.HOUR_OF_DAY)+1);
AlarmManager alarm = (AlarmManager)myService.this.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(myService.this, AlarmReceiver.class);
PendingIntent pIntent = PendingIntent.getBroadcast(BatteryService.this, 0, i, 0);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 1000*60*60, pIntent);
答案 0 :(得分:5)
创建日历实例时,其时间是当前时间。在你的例子中12:32。然后你添加一个小时的一天。现在是13:32。您需要将分钟(和秒)设置为0:
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0); // well ...
答案 1 :(得分:0)
尝试根据分钟进行舍入...当然,这需要获得 CURRENT 时间。
答案 2 :(得分:0)
$('.js-next-generation-loader').on('click', function (e) {
e.preventDefault();
var obj = $(this);
var url = obj.attr("href");
$('body').loader("light");
$.ajax({
type: "GET",
url: url,
success: function (data, text) {
//you can use this
if(data==success){
window.location = url;
}
//or you can use
//This code will go to the desired link after 4 seconds
setTimeout(function(){
window.location = url;
}, 4000);
},
error: function (request, status, error) {
window.location = url;
}
});
});
开始你的警报
然后使用
int hour = calendar.get(Calendar.HOUR_OF_DAY);
重复你的警报 但请注意,警报现在将开始,然后每小时重复一次