如何在一小时之内启动AlarmManager?

时间:2012-04-23 07:28:45

标签: android alarmmanager

如何在最近的一小时内启动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);

3 个答案:

答案 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);

重复你的警报 但请注意,警报现在将开始,然后每小时重复一次