我正在使用下面的代码反复启动我的服务。我的服务每天早上8点开始。并且AlarmManager每1分钟重复一次。我想在下午6点停止这个服务。我怎么能这样做?
AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
PendingIntent loggerIntent = PendingIntent.getBroadcast(this, 0,new Intent(this,AlarmReceiver.class), 0);
Calendar timeOff9 = Calendar.getInstance();
timeOff9.set(Calendar.HOUR_OF_DAY, 08);
timeOff9.set(Calendar.MINUTE, 00);
timeOff9.set(Calendar.SECOND, 00);
//--------------------------------------------------------------------------------------------------------------------
long duration = userinterval * 60 * 1000;
manager.setRepeating(AlarmManager.RTC_WAKEUP,timeOff9.getTimeInMillis(), duration, loggerIntent);
答案 0 :(得分:2)
为了准确地在下午6点取消,我会考虑两个选项:
我更喜欢选项2,以简化每个代码块的模块化。所以对我来说,我会在我的概念验证代码中使用(2),同时处理解决方案。
但从资源的角度来看,选项1更好,因为Android系统只需要记住一个警报。我会在最终的生产代码中使用(1)。
这种工作方式只是我个人的偏好,大多数人可能会说从一开始就使用(1)。
取消的详细信息如下......
至于如何取消闹钟,你通常不会被@commonsware打败答案....
从How to cancel this repeating alarm?
复制的答案使用与您cancel()
使用的AlarmManager
相同的PendingIntent
来调用setRepeating()
上的Intent intent = new Intent(this, AlarmReceive.class);
PendingIntent sender = PendingIntent.getBroadcast(this,
0, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.cancel(sender);
:
{{1}}