gpt4 book ai didi

android - 在特定时间停止服务

转载 作者:行者123 更新时间:2023-11-29 21:43:30 26 4
gpt4 key购买 nike

我重复使用以下代码开始我的服务。我的服务每天早上 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);

最佳答案

为了正好在下午 6 点取消,我会考虑 2 个选项:

  1. 每次闹钟触发时(即每 1 分钟一次),检查时间,如果时间在下午 6 点之后则取消。
  2. 在 AlarmManager 中设置一次性闹钟,使其在下午 6 点准时响起。在该警报中,取消。

我更喜欢选项 2,因为每个代码块的简单性和模块化。因此,对我而言,在研究解决方案时,我会在我的概念验证代码中使用 (2)。

但从资源的角度来看,选项 1 更好,因为 Android 系统只需要记住一个闹钟。我会在我的最终生产代码中使用 (1)。

这种工作方式只是我个人的偏好,大多数人可能会说从一开始就使用 (1)。

有关取消的详细信息如下...


至于如何取消闹钟,@commonsware 的回答并不常见......

以下答案复制自 How to cancel this repeating alarm?


AlarmManager 上调用 cancel(),使用与 setRepeating() 相同的 PendingIntent :

Intent intent = new Intent(this, AlarmReceive.class);
PendingIntent sender = PendingIntent.getBroadcast(this,
0, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

alarmManager.cancel(sender);

关于android - 在特定时间停止服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16479426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com