Android JobScheduler onStartJob 被多次调用

2023-12-25

JobScheduler 调用onStartJob()多次,虽然工作完成了。如果我安排一项工作并等到它完成,一切都会很好。但是,如果我同时安排两个或多个具有不同ID的作业,那么onStartJob()调用后再次调用jobFinished().

例如我安排作业1和作业2使用除了ID之外完全相同的参数,那么顺序是:

  1. onStartJob()对于工作 1 和工作 2
  2. 两项工作都完成了,所以jobFinished()为他们俩调用
  3. 在那之后onStartJob()再次调用具有相同 ID 的两个作业

我的工作很基础,并不复杂。

public class MyJobService extends JobService {

    @Override
    public boolean onStartJob(final JobParameters params) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    // do something

                } finally {
                    // do not reschedule
                    jobFinished(params, false);
                }
            }
        }).start();

        // yes, job running in the background
        return true;
    }

    @Override
    public boolean onStopJob(JobParameters params) {
        // mark my background task as stopped

        // do not reschedule
        return false;
    }
}

我这样安排工作

JobInfo jobInfo = createBaseBuilder(request)
        .setMinimumLatency(2_000L)
        .setOverrideDeadline(4_000L)
        .setRequiresCharging(false)
        .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
        .build();

int scheduleResult = mJobScheduler.schedule(jobInfo);
// is always success

我不知道出了什么问题。


我猜这是由待处理的作业引起的,所以我在服务启动后调用 mJobScheduler.cancelAll() ,问题解决了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android JobScheduler onStartJob 被多次调用 的相关文章

  • Android webview 滚动不起作用

    我正在尝试在网络视图中向下滚动到页面底部 我正在使用谷歌在其教程中提供的网络视图示例 我正在使用这行代码来尝试滚动 但它不起作用 mWebView pageDown true 关于如何使其以编程方式滚动有什么建议吗 谢谢 public cl
  • 在android中通过BLE传输图像

    我使用以下代码传输 1 MB 的图像 如果在每个数据包之间实现线程延迟 则图像将成功传输 如果未设置线程延迟 则所有数据包均从BluetoothGattServer 发送 但BluetoothGattCallback 不会接收所有数据包 任
  • 通过 WhatsApp 发送消息

    由于我发现了一些较旧的帖子 表明 Whatsapp 不支持此功能 我想知道是否发生了变化 以及是否有办法打开与我通过意图发送的号码进行 Whatsapp 聊天 UPDATE请参阅https faq whatsapp com en andro
  • 自定义选择器活动:SecurityException UID n 无权 content:// uri

    我正在构建一个选择器应用程序来替换本机 Android 共享对话框 它工作正常 除非我尝试通过长按图像 gt 共享图像从 Chrome 共享图像 我发现 Google 没有捕获异常 它崩溃了 所以我可以通过 Logcat 查看它 在 Goo
  • Service 和 IntentService,运行从服务器轮询数据库值的服务哪个更好?

    我读过很多关于Service and IntentService 然而 当做出决定时 我没有足够的信心选择使用哪种类型来创建一个后台服务 该服务将在一定时间间隔内从数据库轮询数据 并在获得所需数据时停止它 因为数据代表请求的状态 例如 订购
  • 安卓定位不准确

    我正在尝试获取当前用户的位置 我试图重构我的代码以获得更好的结果 但我只是不断得到关于准确度的荒谬位置 它在 900 600 米之间 如何才能得到更好的结果 使其精度达到50m以内 这是我的代码 package com agam mapsl
  • Android在排序列表时忽略大小写

    我有一个名为路径的列表 我目前正在使用以下代码对字符串进行排序 java util Collections sort path 这工作正常 它对我的 列表进行排序 但是它以不同的方式处理第一个字母的情况 即它用大写字母对列表进行排序 然后用
  • Android Library项目使用gradle在命令行编译时无法导入另一个库项目的R类

    我的 android 项目有这样的结构 ProjectDir settings gradle MyApp depends on LibraryA and LibraryB gt build gradle gt All the other a
  • AudioTrack、SoundPool 或 MediaPlayer,我应该使用哪个?

    如果我需要能够 播放多个音频文件 具有不同的持续时间 例如 5 到 30 秒 独立设置右 左声道的音量 应用声音效果 如混响 失真 那么 我应该使用哪个 API 另外 我在 AudioTrack API 上找不到太多文档 有谁知道在哪里可以
  • glTexImage2D: 之前出错:( 0x506 内部 0x1908 格式 0x1908 类型 0x1401

    当使用 Android Studio 运行模拟器时 我在模拟器屏幕上看不到任何内容 一切都是黑色的 我得到以下事件日志 模拟器 glTexImage2D 出错了 0x506 内部 0x1908 格式 0x1908 类型 0x1401 我已经
  • 如何检查用户在EditText中输入自己的电话号码?

    用户将在我的 Android 应用程序的注册页面上的编辑文本中输入手机号码 如何检查用户输入的是他 她的手机号码而不是其他人的 我试过这个 TelephonyManager tMgr TelephonyManager mAppContext
  • 如何检查 Android 中连接的 wifi 网络是否处于活动状态

    如何自动检查android中连接的WiFi网络上的互联网是否处于活动状态 我可以检查 wifi 是否已启用或 wifi 网络是否已连接 但我不确定如何检查互联网是否已连接 这可能吗 private boolean connectionAva
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • 使用 PhoneGap 使 Android 应用程序易于访问(对于残障人士)

    有人有过使用 PhoneGap 使 Android 应用程序可访问的经验吗 至少我们需要使我们的应用程序符合第 508 条规定 我尝试实现一些标准的辅助功能 文本框标签 向 div 添加标题属性等 但是 当在 Android 中使用 Tal
  • 将 Firebase 云消息传递与 Windows 应用程序结合使用

    我在 Android 和 iOS 应用程序中使用 Firebase Cloud Messaging 但是我还有此应用程序的 Windows Mac OS 版本 我想保留相同的逻辑 我知道 Firebase Cloud Messaging 可
  • Android 相机未保存在特定文件夹 [MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA]

    当我在 Intent 中使用 MediaStore INTENT ACTION STILL IMAGE CAMERA 时遇到问题 相机正常启动 但它不会将文件保存在我的特定文件夹 photo 中 但是当我使用 MediaStore ACTI
  • 如何在 Viewpager 中禁用预加载下一页? [复制]

    这个问题在这里已经有答案了 如何在 Viewpager 中禁用页面预加载 I tried viewPager setOffscreenPageLimit 0 但它不起作用 用这个viewPager setOffscreenPageLimit
  • 如何在android asynctask中使用inputstream作为参数?

    我正在制作一个 Android 应用程序来跟踪股票详细信息 我将通过 csv 雅虎财经 检索数据 据我所知 在android 4 0中 网络连接无法在主线程上完成 因此 我将使用 asynctask 来建立连接 但是 我在参数方面遇到了一些
  • Android:RecyclerView 不显示片段中的列表项

    有人可以帮我尝试让我的 RecyclerView 出现吗 如果我不在片段中实现它 就会出现这种情况 然而 当我尝试将其实现到片段中时 CarFront 中的其他 XML 代码与 RecyclerView 分开显示 我的日志中收到此错误 E
  • 在Android Studio gradle项目中使用NDK和STL

    我在将 stlport 链接到 Android Studio 中的 gradle 项目时遇到问题 使用 NDK 的 Eclipse Android 项目迁移到 Android Studio 该项目使用 STL 我有包含内容的 android

随机推荐

  • 有没有办法在不知道它们的序列号的情况下取消天蓝色服务总线主题中的所有计划消息?

    使用案例 我们使用天蓝色服务总线主题 根据业务规则 我们有时会安排在未来某个时间将消息传递到某个主题 如果系统配置错误 我们需要取消发送到特定主题的所有预定消息 我们没有每条预定消息的序列号 到目前为止我发现了什么 根据https blog
  • 如何在打字稿中描述简单的 Just 函子的接口?

    我第一次尝试用打字稿编写一个简单的界面 并对几乎所有事情都抱有疑问 问题很简单 如何描述这个简单的笑话匹配器扩展 param v Any value function just v return fmap f gt just f v exp
  • “无法分配给 var,因为它是只读属性。”使用 Jasmine 测试框架进行角度测试

    我在 Angular 的一项服务中有一个只读属性 Injectable providedIn root export class MyService private readonly timeIntervals any constructo
  • TortoiseHg 和一个存储库中的多个分支

    我实在想不通 我是 Mercurial 和 TortoiseHg 的新手 阅读了大量文档 仍然找不到答案 我知道分支的一种方法是制作副本 这很清楚 但还有另一种方式称为 命名分支 但这是我无法理解的一件事 例如 我有新的存储库第一个分支称为
  • 使 nstextfield 单行

    如何让 NSTextField 真正成为单行 我以编程方式创建了一个文本字段 当按下返回键时 将选择所有文本 但我仍然可以粘贴多行文本 当我按向右箭头或向下箭头时 它会滚动到下一行 如果我使用 IB 并设置 使用单行模式 则不会出现这些问题
  • ggplot facet_wrap 在每个方面具有特定的变量顺序

    我想用 ggplot 绘制这些数据 library ggplot2 set seed 0 df lt data frame var1 rep c group1 group2 each 3 var2 rep letters 1 3 2 val
  • mvn sonar:声纳有什么作用?

    命令执行的 Maven 生命周期阶段是什么mvn sonar sonar执行 当我看到屏幕上运行的日志时 级别非常高test install我发现了 考虑下面的例子 我有一个如下的 Maven 项目 maven root maven chi
  • Kendo Grid 在网格的“onchange”事件中不返回 dataItem

    我的Kendo网格具有内联编辑功能 数据通过ajax绑定 我尝试过不同的选择 例如 1 var grid Grid data kendoGrid var row this closest tr var rowIdx tr grid tbod
  • 如何阻止像 darodar.com 这样的垃圾邮件引用者访问网站?

    我有几个网站 每天约有 5 的访问量来自垃圾邮件引荐者 我注意到这个引荐来源网址有一个奇怪的事情 它们显示在 Google Analytics 中 但我在自定义设计的表中看不到它们 在该表中我插入了网站的所有访问者 所以我认为它们只操纵 G
  • 您可以使用 .NET MAUI 和 blazor 开发一个面向 Web、ios、android 和 windows 的网页吗?

    我最近阅读了 NET MAUI 但我对其与 Blazor 的用途感到困惑 您可以使用 NET MAUI 和 blazor 开发一个面向 Web ios android 和 windows 的网页吗 例如 有效地开发网页以在任何其他设备上也作
  • 如何在 Vim 中执行 JSLint

    我每天都在 vim 中度过 目前正在编写大量 JavaScript 我一直在尝试找到一种方法将 JSLint 或类似的东西集成到 vim 中以改进我的编码 有没有人设法做这样的事情 我试过这个 Vim 中的 Javascript 语法检查
  • pbxcp 问题,找不到文件,但它肯定存在

    所以我一直在为我的应用程序处理不同的图像 看看它的外观 替换它 一切都很好 直到早些时候我用我制作的更新版本替换了一个文件 checkmark png 现在当我构建我时得到pbxcp checkmark png no such file o
  • qml虚拟键盘:keyboardDesignWidth和Height

    我正在查看虚拟键盘的 QML 样式 KeyboardDesignWidth 和 Height 的用途是什么 我似乎在管理键盘的宽度和高度方面遇到了很多麻烦 并且永远无法将其设置为我想要的方式 直接设置键盘高度和宽度也没有多大帮助 问题在于组
  • 类型参数和索引之间的区别?

    我是依赖类型的新手 对两者之间的区别感到困惑 似乎人们通常说类型是由另一种类型参数化 and 按某个值索引 但是 在依赖类型语言中 类型和术语之间不是没有区别吗 参数和指数之间的区别是根本性的吗 您能否举例说明它们在编程和定理证明中的含义差
  • size() 在 java 的 ArrayList 类中如何工作?

    所以 为了获得最有效的代码 我真的很想知道size Java中的方法ArrayList工作 它是否会计算每个元素 遍历所有位置 就像一个简单的列表一样 或者它只是根据最后注册的索引获取大小 提前致谢 看看里面永远不会有什么坏处源代码 htt
  • Xcode 6 大小类中的自定义字体大小无法与自定义字体正常工作

    Xcode 6有一个新功能fonts and 字体大小 in UILabel UITextField and UIButton可以根据当前设备配置的尺寸类别自动设置 就在故事板中 例如 您可以设置一个UILabel在 任意宽度 紧凑高度 配
  • 点绕 z 轴旋转

    我在 3D 空间中有 3 个向量 让我们称呼他们为xaxis yaxis and zaxis 这些向量以任意一个为中心point3D 空间中的某处 我有兴趣旋转xaxis and yaxis关于的向量zaxis向量度数 对于以下代码 其值是
  • 为什么 CSS 宽度和高度属性不根据填充进行调整?

    首先来介绍一下场景 HTML div div test div div CSS container width 300px height 150px background color d7ebff inner width 100 heigh
  • 如何在调用某个函数时打印堆栈跟踪

    有没有办法在每次调用某个函数时转储 C 或 C 正在运行的进程中的调用堆栈 我的想法是这样的 void foo print stack trace foo s body return Where print stack trace工作原理类
  • Android JobScheduler onStartJob 被多次调用

    JobScheduler 调用onStartJob 多次 虽然工作完成了 如果我安排一项工作并等到它完成 一切都会很好 但是 如果我同时安排两个或多个具有不同ID的作业 那么onStartJob 调用后再次调用jobFinished 例如我