Android计划任务在Android 9中每天的特定时间执行

Android计划任务在Android 9中每天的特定时间执行,android,android-jobscheduler,background-task,Android,Android Jobscheduler,Background Task,我想在每天早上8点触发一个通知。警报管理器无法从android 9运行。我也试过和工作经理一起工作,但不起作用 目前我使用的是alaram服务,它的工作性能可以达到8版,但不是9版 Intent intent = new Intent(this, appstartreceiver.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 99, intent, PendingIntent.FLAG_UPDATE_

我想在每天早上8点触发一个通知。警报管理器无法从android 9运行。我也试过和工作经理一起工作,但不起作用

目前我使用的是alaram服务,它的工作性能可以达到8版,但不是9版

Intent intent = new Intent(this, appstartreceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 99, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);

    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR_OF_DAY, 8);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);

    long startUpTime = calendar.getTimeInMillis();

    // To avoid firing the alarm if the time is passed while setting
    if (System.currentTimeMillis() > startUpTime) {
        startUpTime = startUpTime + 24 * 60 * 60 * 1000;
    }

    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startUpTime, 24 * 60 * 60 * 1000, pendingIntent);

注意:即使应用程序处于终止/关闭状态,我也要触发通知。

你好,RK191,欢迎使用堆栈溢出!你必须给我们更多的细节,关于什么是不起作用的,你尝试了什么,以及到目前为止你发现了什么;当有疑问时,请检查如何提出好的问题,这将使你有更好的机会得到好的答案;用户通常不会在这里免费编写代码:)祝你好运!(如果设置了约束,工作经理应该工作,但不能保证精确的时间执行)。(此外,如果您描述“任务”的性质,这会有所帮助。您当然也可以使用计时器和计时器任务,但总体而言,没有太多上下文,很难知道)@MartinMarconcini:Timer和TimerTask在应用程序关闭时不起作用。正确,您需要前台服务或闹钟通过Intent Service或类似服务唤醒您。当你说“不工作”时,你的意思是警报没有触发吗?请记住,JobScheduler、AlarmManager和recent WorkManager三者都明确表示“不保证准确的执行时间”,即使满足了约束条件。在NN时间发出警报真的很重要吗?也许可以使用
setexecute
或其空闲变量
setexecuteandallowhileidle()
代替
setRepeating
,并在警报内重新安排下一个警报?如果我没有弄错的话(已经有一段时间了),这些都是为了在特殊情况下使用的,如果您直接查看Alarm Manager的源代码以了解选项和行为,会更容易。