android - 无限制地触发 JobService
问题描述
当在某些设备上我的通知没有背景时,我有一个小问题,有时不会在 android O 上触发(特别是在小米上)。我正在使用从 BroadcastReceiver 接收数据的 Awareness API。所以......我想做的是将我的通知放在 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?
解决方案
我正在使用 .setOverrideDeadline(0)。它基本上会在预定后立即运行,我认为它没有任何危害。我认为这是一个比网络更好的约束,因为它总是得到满足,而用户不可能 100% 的时间拥有网络。
我没有找到成功设置任何约束的方法。
推荐阅读
- azure-devops - 检查工作人员是自托管的还是 Azure 运营的
- java - 如何修复测试依赖项中的拆分包?
- java - 使用 openjfx 插件时,Gradle 不会在 Mac 上的 Eclipse 中构建 Java 路径
- azure-devops - 在 Azure Devops 中创建角色用户后将 AzureAD 链接到组织域的影响
- javascript - 在酶中模拟焦点不会改变 document.activeElement
- javascript - 如何实现计数缺失括号?
- node.js - 使用nodejs将数据库(sql server)中的数据保存到全局变量中
- java - 仅当模型存在时才更新 JPA
- awk - 提取第二对引号之间的值
- python - 用于查看今天是否创建文件的 Python 脚本,发送带有结果的电子邮件