我编写了以下 AlarmManager
来启动一个 Service
,它将在指定的时间间隔下载文件:
Calendar updateTime = Calendar.getInstance();
updateTime.setTimeZone(TimeZone.getDefault());
updateTime.set(Calendar.HOUR_OF_DAY, 7);
Intent downloader = new Intent(mActivity, FileDownloadService.class);
downloader.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getBroadcast(mActivity, 0, downloader, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, updateTime.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
从应用程序的另一部分,我获得了运行 Service
的重复间隔值。重复间隔的值每天都在变化。
我们如何在运行时更改 AlarmManager
间隔,因为上面的代码只会执行一次?
例如,在第 1 天,我希望重复间隔为 15 分钟,而在第 2 天,我希望重复间隔为 2 小时。
如何动态更改重复间隔?
最佳答案
将值 15 分钟作为额外存储在您的未决 Intent 中。当您的代码被警报管理器触发时,获取当前值,根据您的需要增加它并重置保存该值的 Intent 中的额外值。
编辑:使用 alarmManager.set(int type, long triggerAtMillis, PendingIntent operation);在每次新调用您的代码时。
关于android - 如何在 Android 运行时更改 AlarmManager 的重复间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30136288/