Android 中的 WorkManager 多次执行 do Work()

2024-03-16

我正在使用 WorkManager 来安排一些任务,但问题是工作管理器在一次调用中多次执行这些任务 { doWork() } 。


我在用:

'android.arch.work:work-runtime:1.0.0-alpha08'

我尝试过使用-alpha07,06,05,04。但我有同样的问题。有时甚至会同时执行5-6次


这是代码:

public class MyWorker extends Worker {

@NonNull
@Override
public Result doWork() {

    Log.i("CountWorker","0");
    sendNotification("Notice", "A notice was sent");
    return Result.SUCCESS;

}

这是活动

public class MyWorkerActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    final PeriodicWorkRequest pwr = new PeriodicWorkRequest
            .Builder(MyWorker.class, 16, TimeUnit.MINUTES)
            .setConstraints(Constraints.NONE)
            .build();

    WorkManager.getInstance().enqueue(pwr);

}
}

这是 Logcat 的结果:

09-24 16:44:35.954 22779-22816/com.simran.powermanagement I/CountWorker: 0
09-24 16:44:35.970 22779-22817/com.simran.powermanagement I/CountWorker: 0
09-24 16:44:35.977 22779-22818/com.simran.powermanagement I/CountWorker: 0

当你enqueue a PeriodicWorkRequest,这确实not取消任何现有的PeriodicWorkRequest您之前已排队的。因此,当您编写应用程序时,每次活动开始时,您都会添加定期工作请求,慢慢地从 1 到 2 到 3。

相反,你想使用enqueueUniquePeriodicWork() https://developer.android.com/reference/androidx/work/WorkManager#enqueueuniqueperiodicwork:

此方法允许您将唯一命名的PeriodicWorkRequest,其中一次只能有一个特定名称的PeriodicWorkRequest 处于活动状态。例如,您可能只希望一项同步操作处于活动状态。如果有一项待处理,您可以选择让它运行或用您的新作品替换它。这uniqueWorkName唯一标识此PeriodicWorkRequest。

代码如下:

final PeriodicWorkRequest pwr = new PeriodicWorkRequest
        .Builder(MyWorker.class, 16, TimeUnit.MINUTES)
        .setConstraints(Constraints.NONE)
        .build();

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

Android 中的 WorkManager 多次执行 do Work() 的相关文章

  • 设置文本视图 Android 的文本颜色

    在 string xml 文件中我使用以下标签
  • 如何从 SDK 实现每个会话的 Google Places 自动完成功能?

    是否可以从 Android 和 iOS 应用程序的 place sdk 实现基于会话的自动完成 根据 6 月 11 日生效的新 Google 地图框架定价 对自动完成的请求可以分为基于击键 会话的请求 我找不到描述实施步骤的文档 除了这个参
  • Android短音的正确播放方法?

    我正在创建一个应用程序 屏幕上将有多个图像 这些图像将是按钮 点击时会播放短促的声音 我对此进行了研究 只能找到我当前用来播放声音的方法 这似乎根本没有响应 我希望声音能够快速播放并且能够响应多次快速点击 我不确定这在 Android 中是
  • Android Studio:XML 布局中的“包装在容器中”

    编辑 XML 布局文件时 Eclipse 有一项称为 包裹在容器中 的功能 重新格式化 gt Android gt 可让您选择一个或多个视图并在其周围包裹您选择的布局 Android Studio中有类似的东西吗 目前正在实施中 问题 69
  • AdapterContextMenuInfo 始终为 null

    我尝试通过 android 开发文档中的书来做到这一点 this didn t create a menu i don t know why registerForContextMenu getListView setListAdapter
  • Bitmap.getPixels() 中的 IllegalArgumentException

    我想将数据从位图复制到int using getPixels 这是我当前的代码 int pixels new int myBitmap getHeight myBitmap getWidth myBitmap getPixels pixel
  • 在 android 中建立与 MySQL 的池连接

    我需要从我的 Android 应用程序访问 MySQL 数据库 现在所有的工作都通过 DriverManager getConnection url 等等 但我必须从多个线程访问数据库 所以我必须使用连接池 问题1 是 com mysql
  • Android:后台Activity可以执行代码吗?

    后台的活动是否被视为 正在运行 并且可以执行代码 还是处于挂起状态 他们暂停了 活动生命周期 http developer android com reference android app Activity html ActivityLi
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • Mipmap 与可绘制文件夹[重复]

    这个问题在这里已经有答案了 我正在使用 Android Studio 1 1 Preview 1 我注意到 当我创建一个新项目时 我得到以下层次结构 不同 DPI 的 Mipmap 文件夹 不再有不同 DPI 的可绘制文件夹 我应该将所有资
  • Android 中如何通过彩信发送图片?

    我正在开发多媒体应用程序 我正在通过相机捕获一张图像 并希望将该图像和文本发送到其他号码 但我不知道如何通过彩信发送图像 MMS 只是一个 http post 请求 您应该使用执行请求额外的网络功能 final ConnectivityMa
  • Android 2.3 模拟器在更新位置时崩溃

    我正在使用 Eclipse 编写和调试 Android 应用程序 我需要做的事情之一是更新设备的位置 因此我尝试使用模拟器控制窗口中的位置控制面板 在 手动 选项卡上 我选择 十进制 输入有效的纬度和经度 然后单击 发送 不幸的是 接下来发
  • Android Studio 缓慢的增量构建

    我已经完成了许多步骤来完善我们的构建系统 those https stackoverflow com questions 16775197 building and running app via gradle and android st
  • Android 如何将总天数准确更改为年、月、日?

    我正在做一个应用程序 该应用程序与根据给定的生日日期输入获取一个人的年龄有关 为此 我从下面的代码中获取从该日期到当前日期的总天数 String strThatDay 1991 05 10 SimpleDateFormat formatte
  • Android 中的处理程序与异步调用

    目前我正在使用处理程序来调用 Web 服务方法以使其在后台运行 问题是它需要更多的时间来给出响应 在性能方面似乎更昂贵 现在我计划使用异步调用 哪一个是最好的 Android 中的处理程序和异步调用有什么区别 请帮我想出一个最好的解决方案
  • 在命令行上卸载 Android SDK 的选定部分

    这与 卸载旧的 Android SDK 版本 https stackoverflow com questions 15182377 uninstall old android sdk versions 除非我想在无头 Linux CI 服务
  • 问题:为什么React Native Video不能全屏播放视频?

    我正在react native 0 57 7 中为android和ios创建一个应用程序并使用反应本机视频 https github com react native community react native video播放上传到的视频
  • Android:如何从网络异步获取搜索建议?

    我创建了一个可搜索的活动 现在 我想添加从网络服务获取的搜索建议 我想异步获取这些建议 根据添加自定义建议 http developer android com guide topics search adding custom sugge
  • 如何使用 AccessibilityService 在 Android 中模拟按键

    我正在编写一个辅助服务 我一直在尝试在应用程序上进行一些自动搜索 我使用accessibilityservice action paste来填充EditText 然后我需要模拟软键盘上的按键 但我不知道如何做 你们能帮我一下吗 你可以尝试A
  • Android 屏幕方向错误

    我使用的是 Android HTC HERO 2 1 版本 我写的活动

随机推荐

  • 全局分区索引是否比非分区索引更好(更快)?

    我有兴趣了解对通常作为查询目标的数字列进行分区是否有性能优势 目前我有一个包含约 5000 万条记录的物化视图 当使用常规 B 树索引并按此数字列搜索时 我得到的成本为 7 查询结果大约需要 0 8 秒 使用非预置缓存 为该列添加全局哈希分
  • 如何设置每个组件的再磨刀设置

    我在一个代码库中工作 由于历史原因 并非所有项目都具有相同的编码约定 事实上 在一个 sln 中 我有需要不同命名约定的项目 有没有办法让 resharper 根据我正在编辑的文件所在的项目使用不同的设置 自 ReSharper 6 1 起
  • iOS7 中的警报视图显示白色矩形

    以下代码在 iOS 5 到 6 1 上完美运行 我什至有带有该代码的应用程序 void showActivityIndicator if mLoadingView mLoadingView UIAlertView alloc initWit
  • 谷歌关闭编辑器/所见即所得

    有人有使用 Google Closure Editor WYSIWYG 的经验吗 我正在考虑从 CKEDITOR 迁移到 Google Closure Editor WYSIWYG 理想情况下 我很想使用 etherpad 编辑器 但似乎没
  • ES7只由两个特性组成吗?

    根据这个博客 https webapplog com es7 es8 https webapplog com es7 es8 ES7的特点是 Array prototype includes 求幂运算符 这是正确的吗 如果是的话 为什么花了
  • 字符串值前面的“u”符号是什么意思? [复制]

    这个问题在这里已经有答案了 是的 简而言之 我想知道为什么我在我的键和值前面看到一个 u 我正在渲染一个表单 该表单具有特定标签的复选框和一个用于 IP 地址的文本字段 我正在创建一个字典 其键是硬编码在 list key 中的标签 字典的
  • ViewPager 和数据库

    数据位于数据库中 因此我通常会使用 CursorAdapter 并让它与 ListView 上的 CursorLoader 一起使用 但是现在我需要一个 ViewPager 而不是 ListView 它需要一个 PagerAdapter 而
  • Go 中的随机数组

    我尝试将以下 Python 代码翻译为 Go import random list i for i in range 1 25 random shuffle list print list 但发现我的 Go 版本又长又尴尬 因为没有 shu
  • 结合代码契约和正则表达式

    所以我有一个非常简单的类 其中一个字符串作为属性 该字符串必须具有一定的模式 我正在尝试使用代码合同来强制执行此操作 这个类看起来像这样 class SimpleClass public Property get set public Si
  • 在 UITableViewCell 中播放视频

    我正在尝试在单元格本身中播放视频 而不是全屏视频显示 我在用MPMoviePlayerController以此目的 我已经定义了 MPMoviePlayerController moviePlayer 在实施部分 Then in cellF
  • 查找 HTML5 表单用于验证的正则表达式

    一些 HTML5 输入元素接受pattern属性 它是用于表单验证的正则表达式 其他一些 HTML5 输入元素 例如 input type email自动进行验证 现在看来 跨浏览器处理验证的方式是不同的 给定一个特定的浏览器 比如 Chr
  • JSP/Servlet 中的倒计时器

    我正在使用 servlet jsp 开发在线考试 我需要在问题页面添加一个倒计时 hh mm ss 计时器 该计时器将结束考试并重定向到结果页面 除了计时器功能之外 我已经完成了所有其他功能 有人可以为此提供一些帮助吗 Thanks 您是否
  • 如何将本地数据存储数据导出到生产 Google App Engine 数据存储

    我想将本地数据存储数据导出到我的 google appengine 应用程序数据存储 有没有直接且简短的方法可以做到这一点 你可以阅读相关内容here http code google com appengine docs python t
  • STM32内部时钟

    我对 STM32F7 设备 意法半导体的 Cortex M7 微控制器 上的时钟系统感到困惑 参考手册没有充分阐明这些时钟之间的差异 SYSCLK HCLK FCLK 参考手册中阅读章节 gt RCC 为 Cortex 系统定时器 SysT
  • Angular 4 预定表单自动保存

    我正在尝试在 Angular 4 中实现表单数据自动保存 它应该像这样工作 用户更改表单中的某些数据 gt 调用对数据库的某些保存请求 我们假设这里启动了一些计时器 2 秒 在上一个保存请求之后的 2 秒内 所有更改都不会调用任何请求 以减
  • 为什么我的书呆子树有这些奇怪的字符

    尝试让 vim 设置顺利进行 我想让书呆子树发挥最佳状态 但是当我使用它时 它的每个部分前面都有这些字符 V 看起来像这样 V project V tools 我遇到了完全相同的问题 并且能够通过取消注释 UTF 8 并在 etc loca
  • 使用 HTML 和 CSS 扩展大括号

    有没有一种简单的方法可以模拟cases提供的环境amsmath在 LaTeX 中使用 HTML 和 CSS 例如 在 LaTeX 中 可以这样写 documentclass article usepackage amsmath begin
  • SQL Anywhere 11,JZ0C0:连接已关闭

    我开发基于 apache tomcat 6 0 26 apache cxf 2 2 7 spring 3 0 hibernate 3 3 和 sybase sqlanywhere 11 的 Web 服务 我使用 SYBASE jconn j
  • 使用回形针上传多个文件

    我在使用回形针上传多个文件时遇到问题 我的模型是这样的 slider has many imgarrays imgarrays has many imageobjects imageobjects have attachment as fo
  • Android 中的 WorkManager 多次执行 do Work()

    我正在使用 WorkManager 来安排一些任务 但问题是工作管理器在一次调用中多次执行这些任务 doWork 我在用 android arch work work runtime 1 0 0 alpha08 我尝试过使用 alpha07