不受限制地触发JobService

时间:2018-06-27 13:58:22

标签: android jobservice

在某些设备上,我的无背景通知有时在android O(特别是在小米)上不触发时,我遇到了一个小问题。我正在使用Awareness API,它从BroadcastReceiver接收数据。所以...我想做的是将通知放入JobService中,也许会得到其中的一些处理时间,然后这样调用:

PersistableBundle bundle = new PersistableBundle();
            bundle.putString("KEY1", "Test");

            JobInfo job = new JobInfo.Builder(0, new ComponentName(context, AppNotification.class))
                    .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
                    .setExtras(bundle)
                    .build();

            JobScheduler jobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
            jobScheduler.schedule(job);

但是当我在没有

的情况下运行它时
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)

我收到一条错误消息“您正在尝试建立不受限制的作业,这是不允许的”。但是我不需要任何约束,这是我发现最有可能一直工作的约束。但是,实际上始终有效的约束是什么? 如何不受任何限制地启动JobService?

1 个答案:

答案 0 :(得分:7)

我正在使用.setOverrideDeadline(0)。它基本上可以按计划运行该作业,我认为其中没有任何危害。我认为这是比网络更好的约束,因为它总是可以满足,而用户不可能100%地拥有网络。

我找不到成功设置任何约束的方法。