您如何在仍然设置一天中的特定时间的同时替换在 Android Oreo 中在后台工作的 AlarmManager?

Bou*_*rne 5 android android-8.0-oreo

简短版本:在 Android 8 (Oreo) 中,Alarm Managers 不再在后台工作,Android 人说使用 Job Scheduler 作为替代方案,但 Job Scheduler 不允许一天中的特定时间,就像 Alarm Manager 做得很好一样。

更长的版本:我有一个“提醒”通知,它会在用户设置的特定时间发出。到目前为止,我已经使用警报管理器在设定的时间发布通知。即使应用程序在后台,这也会向用户发送通知。但在 Android Oreo / 8.0 中,这不再被允许。大多数后台服务、接收器等都相当有限。我已经设置了一个作业调度程序,但不允许有一个确切的时间。无法将作业调度程序中的定期设置提前设置为特定时间。因此,尽管 Android 声称作业调度程序是警报管理器的预期替代品,但它似乎并没有完成人们使用它的关键事情之一,即在一天中的特定时间进行设置。

我已经尝试过同步适配器(也需要警报管理器!)、处理程序(在特定时间什么都没有),尝试使用不同的作业服务设置(定期、最小延迟等),在之后重置通知最后一个完成了(也不能在后台这样做!),但仍然没有找到有效的解决方案。

有没有像作业调度程序一样工作的东西(即 Android 8/Oreo 允许您在后台运行,但允许您每天安排一天中的确切时间?

Com*_*are 0

Android 8 (Oreo) 中的警报管理器不再在后台运行

我不知道AlarmManagerAndroid 8.0 中有任何变化。请随意指出文档或问题跟踪器条目来验证您的主张。或者,使用可重现的测试用例提交您自己的问题。

但在 Android Oreo / 8.0 中,不再允许这样做。

当然可以,至少在 Android 6.0 到 7.1 中它的表现是一样的。打瞌睡模式和应用程序待机已经被搞砸了AlarmManager,但这对 Android 8.0 来说并不是什么新鲜事。

大多数后台服务、接收器等都相当有限。

他们仍然可以提出Notification,这就是您的问题表明您想要做的。

有谁知道在 Android Oreo 中如何做到这一点,即使应用程序处于后台也能正常工作?

使用AlarmManager。由于您正在编写相当于闹钟应用程序的内容,因此请使用setAlarmClock().