首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用Workmanager/PeriodicWorkRequest在间隔之间保留数据

WorkManager是Android Jetpack中的一个库,用于在后台执行可延迟的异步任务。它提供了一种简单且灵活的方式来调度任务,并确保它们在设备处于活动状态时执行,同时还能在设备重启后继续执行。

PeriodicWorkRequest是WorkManager库中的一个类,用于创建周期性的后台任务。它允许我们定义任务的执行间隔,并在每个间隔内执行任务。

要使用WorkManager和PeriodicWorkRequest来在间隔之间保留数据,可以按照以下步骤进行操作:

  1. 添加依赖:在项目的build.gradle文件中,添加以下依赖项:
代码语言:txt
复制
implementation "androidx.work:work-runtime-ktx:2.7.0"
  1. 创建Worker类:创建一个继承自Worker的类,用于执行后台任务。在这个类中,实现doWork()方法来执行具体的任务逻辑。例如,可以在doWork()方法中将数据保存到本地数据库或云存储。
代码语言:txt
复制
class MyWorker(context: Context, params: WorkerParameters) : Worker(context, params) {
    override fun doWork(): Result {
        // 执行任务逻辑,保留数据
        return Result.success()
    }
}
  1. 创建并调度任务:在需要执行任务的地方,创建一个PeriodicWorkRequest对象,并使用WorkManager的enqueueUniquePeriodicWork()方法来调度任务。指定任务的唯一名称、执行间隔和时间单位。
代码语言:txt
复制
val workRequest = PeriodicWorkRequest.Builder(
    MyWorker::class.java, 
    1, // 执行间隔
    TimeUnit.HOURS // 时间单位
).build()

WorkManager.getInstance(context).enqueueUniquePeriodicWork(
    "my_unique_work", // 唯一名称
    ExistingPeriodicWorkPolicy.KEEP, // 保留任务
    workRequest
)

在上述代码中,任务将每隔1小时执行一次,并且使用ExistingPeriodicWorkPolicy.KEEP策略来保留任务。这意味着,即使设备重启,任务也会继续执行。

通过以上步骤,我们可以使用WorkManager和PeriodicWorkRequest来在间隔之间保留数据。这种方式适用于需要定期执行后台任务并保留数据的场景,例如定时同步数据、定时备份等。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WorkManager: 周期性任务

让我们先看看这两种 WorkRequest 之间的区别: 最小周期时长为 15 分钟 (与 JobScheduler 相同) Worker 类不能在 PeriodicWorkRequest 中链式执行...的电池优化策略和一些您添加的约束条件会延长两次重复之间的时间间隔。...= WorkManager.getInstance(context) workManager.enqueuePeriodicWork(work) 关于如何获取 WorkManager 实例的说明:...数据的输入和输出 WorkManager 允许您传递一个 Data 对象给您的 Worker,同时 success 和 failure 方法被调用时,也会返回一个新的 Data 对象给您 (由于您返回...所以,我们要在哪里看到和使用 Result#success(outData) 方法所返回的数据? 我们可以通过 PeriodicWorkRequest 的 WorkInfo 来观察这些 Data。

1.8K30
  • WorkManager的用法

    WorkManager有三个重要特点,分别如下:   1.针对的是不需要及时完成的任务   2.保证任务一定被执行   3.兼容范围广,最低能兼容API Level14 二.WorkManager的基本使用方法...3.使用WorkRequest配置任务     配置任务就是告诉系统,任务何时运行及如何运行,下面结合代码讲解 public class MainActivity extends AppCompatActivity...6.WorkManager与Worker之间的参数传递     WorkManager通过setInputData()方法向Worker传递数据数据的传递通过Data对象来完成,需要注意的是,Data...Worker通过getInputData()方法接收数据,并在任务完成后向WorkManager返回数据,通过return Result.success(outputData),然后WorkManager...周期性任务使用方式和一次性任务类似,不过需要注意的是,周期性任务的时间间隔不能少于15分钟。

    42130

    Android Jetpack架构组件(七)之WorkManager

    后台延时任务 WorkManager能够保证任务一定会被执行,但不是不能保证被立即执行,也即说适当的时候被执行。因为WorkManager有自己的数据库,与任务相关的信息和数据就保存到数据库中。...2.3 创建 WorkRequest 完成Worker的定义后,必须使用 WorkManager 服务进行调度该工作才能运行。对于如何调度工作,WorkManager 提供了很大的灵活性。...如果任务的性质对运行的时间比较敏感,可以将 PeriodicWorkRequest 配置为每个时间间隔的灵活时间段内运行,如图 1 所示。...KEEP:保留现有工作,并忽略新工作。 APPEND:将新工作附加到现有工作的末尾。此政策将导致您的新工作链接到现有工作,现有工作完成后运行。...如果您希望无论现有工作的状态如何都运行新工作,那么可以使用 APPEND_OR_REPLACE。

    1.9K11

    JetPack--WorkManager

    WorkManager是用于后台执行任务的工具,相比于Service、JobSchedule等,它拥有很低的能耗,但是它不是立即执行任务的,对于一些不需要及时完成的任务,使用WorkManager是一个很好的选择...WorkManager内部使用数据库,所以能保证任务一定会执行。...WorkManager的兼容性也很好,最低支持api14,api23以前,WorkManager内部是使用了JobSchedule,23以后使用的是AlarmManager+BroadCastReceiver...使用WorkManager需要添加gradle依赖: implementation 'androidx.work:work-runtime:2.5.0' 1.使用WorkManager 定义Work类...(workRequest.getId()); 6.参数传递 参数传递分成两方面,一个是创建任务时传入参数,一个是执行任务时传递参数 使用Data创建任务时传入参数: //传入参数

    66410

    Android之任务调度WorkManager和JobSchedule的使用

    WorkManager使用起来也非常简单,因为我这边定时任务的频率1分钟以内,如果不是因为最小间隔是15分钟的原因,就全部使用WorkManager了,直接代码开始。...其中包括运行工作必须满足的约束、调度信息(例如延迟或重复间隔)、重试配置,并且可能包含输入数据(如果工作需要)。 WorkRequest 本身是抽象基类。...顾名思义,OneTimeWorkRequest 适用于调度非重复性工作,而 PeriodicWorkRequest 则更适合调度以一定间隔重复执行的工作。...5秒钟,结果运行起来后,5秒是不起作用的,还是间隔的15分钟,效果如下图: 总的来说其实WorkManager还是挺不错的,简单,方便,可以多任务,如果不是对间隔时间要求短,推荐使用WorkManager...获取执行间隔时,会先比较最小间隔时间和设置的间隔时间,取其中大的那个。所以setPeriodic设置时间小于15分钟是不会生效的。

    3.6K10

    Android开发笔记(一百八十八)工作管理器WorkManager

    Android11不光废弃了AsyncTask,还把IntentService一起废掉了,对于后台的异步服务,官方建议改为使用工作管理器WorkManager。...当然这些后台工具的用法各不相同,徒增开发者的学习时间而已,于是乎谷歌索性把它们统一起来,Jetpack库中推出了工作管理器WorkManager。...因为WorkManager来自Jetpack库,所以使用之前要修改build.gradle,增加下面一行依赖配置: implementation 'androidx.work:work-runtime:...该步骤把后台任务需要的输入参数封装到一个数据对象中,此时用到了数据工具Data,输入数据的构建代码示例如下: // 2、构建输入数据 Data inputData = new Data.Builder...周期性任务的间隔时间不能小于15分钟 String workTag = "PeriodTag"; PeriodicWorkRequest periodRequest = new PeriodicWorkRequest.Builder

    1.3K30

    WorkManager从入门到实践,有这一篇就够了

    那么该如何解决呢?很简单,看WorkManager的定义,使用WorkManager就可以轻松解决。这里就不再拓展实现代码了,只要你继续看完这篇文章,你就能轻松实现。...JobScheduler,那么API23以下又该如何呢?...其实本质是WorkManager结合了Room,将数据保存在数据库中。 这一步要点就是这么多,下面进入下一步。...由于篇幅有限,这里就不一一展开,感兴趣的可以查看源码 4.2 PeriodicWorkRequest PeriodicWorkRequest是可以周期性的执行任务,它的使用方式与配置和OneTimeWorkRequest...WorkInfo获取的本质是通过操作Room数据库来获取。文章的Work部分已经提到,执行完Work任务之后传递的数据将会保存到Room数据库中。

    1.8K20

    如何使用WorkManager执行后台任务(上)

    WorkRequest也是一个抽象类,使用的时候是框架库中提供的子类 OneTimeWorkRequest和 PeriodicWorkRequest类,分别代表一次性任务和周期任务 WorkRequest.Builder...约束类是可以使用 WorkRequest.Builder 创建的时候进行传递给 WorkRequest。 WorkManager:工作任务管理器,它是用于管理工作任务的请求队列的类。...0x02 实践篇——工作流 假设我们开发一个图片相关的APP,这个应用需要期地压缩它存储的图片。我们使用 WorkManager来实现这个需求。...例如,可以设备空闲的时候、或者充电的时候执行任务。这种情况,可以使用 Constraints.Builder来创建一个约束条件实例,然后传递到 WorkRequest中。...例如,一个图片应用中,可能会有一个定期检查需要压缩图片的任务。这时候可使用PeriodicWorkRequest.Builder 来创建一个周期任务。

    1.6K20

    WorkManager _Android新架构组件

    但上述这些工具进程结束后及结束所有任务,其实Google自己也说了:”WorkManager并不是为了那种应用内的后台线程而设计出来的. 这种需求你应该使用ThreadPool”。...3.易于查询 你可以使用分配给每个任务的唯一标识来询问任务的状态,无论是正在运行,挂起还是已完成。 WorkManager API超越了任务的当前状态,允许任务一键值对格式返回数据。...WorkManager使用LiveData来干会任务的数据和状态,所以,你的Activity可以观察这个LiveData,并且每当任务完成时都会得到通知。...4 WorkManager使用方法 Work manager APIs建立几个类上,你必须继承一些抽象类来安排任务。...Worker:WorkManager世界中,Worker等同于需要在后台执行的任务或作业。这是一个抽象类。你需要继承它。您的Worker类包含有关如何执行该任务的信息,但它没有关于何时运行的信息。

    2.7K20

    Jetpack WorkManager 看这一篇就够了~

    工作器中调用 setForeground() 来处理通知。 可延期 一次性或定期 PeriodicWorkRequest 和 Worker。 接下来来看具体的使用方法。...入门使用 添加依赖库 本文代码使用Kotlin编写,所以这里仅引入Kotlin相关的库即可,build.gradle中添加代码如下所示: def work_version = "2.7.1" implementation... "androidx.work:work-runtime-ktx:$work_version" 如果使用的是Java语言该如何引用呢?...这样我们就完成了一个最简单的WorkManager使用案例。接着我们来进一步的探索。...使用WorkManager注册的周期性任务不能保证一定会准时执行,这并不是bug,而是系 统为了减少电量消耗,可能会将触发时间临近的几个任务放在一起执行,这样可以大幅度地减 少CPU被唤醒的次数,从而有效延长电池的使用时间

    1.5K20

    Android WorkManager浅谈

    WorkManager根据设备API的级别和应用程序状态等因素来选择适当的方式运行任务。如果WorkManager应用程序运行时执行你的任务,它会在应用程序进程的新线程中执行。...Note:WorkManager适用于需要保证即使应用程序退出系统也能运行任务,比如上传应用数据到服务器。不适用于当应用程序退出后台进程能安全终止工作,这种情况推荐使用ThreadPools。 ?...功能: 基础功能 使用WorkManager创建运行在你选择的环境下的单个任务或指定间隔的重复任务 WorkManager API使用几个不同的类,有时,你需要继承一些类。...WorkRequest是一个抽象类,你需要使用它一个子类,OneTimeWorkRequest或PeriodicWorkRequest。...WorkRequest.Builder 创建WorkRequest对象的帮助类,你需要使用子类OneTimeWorkRequest.Builder或PeriodicWorkRequest.Builder

    1.1K40

    Android-Jetpack笔记-WorkManager

    WorkManager能帮我们更好的管理后台任务,可以更好地管理执行时机、执行顺序和执行状态(有无网络、是否充电)。...同时,他会将任务存储进数据库来保证关机重启后任务仍可执行(这点有待验证,因为国内机型太多了)。....build(); //还有周期性请求PeriodicWorkRequest,需要注意的是内部限制了最小周期为15分钟 //执行任务,...优缺点 优点: 使用方便,内部会根据不同系统选择合适方案 能链式调度,让各任务按指定顺序执行 能配置各种执行状态,如有无网络、是否充电 任务被存储进数据库,关机仍可执行(待验证) 缺点: 还没发现...参考 知乎-WorkManager的基本使用 B站-Android Jetpack WorkManager | Android 中文教学视频 掘金-[译] 从Service到WorkManager

    1K20

    Android后台网络任务:从WorkManager到JobScheduler的全面解析

    一、WorkManager使用和原理 1.1 使用方法 WorkManager是Android Jetpack的一部分,它提供了一种简单的方法来执行后台任务。...在网络状况良好时,我们可以选择TCP协议,它提供了可靠的数据传输,但在网络状况不佳时,TCP协议的重传机制可能会导致延迟。此时,我们可以选择UDP协议,虽然它不保证数据的可靠传输,但能够降低延迟。...为实现节能和网络优化,我们设定了任务设备充电并连接 Wi-Fi 时执行。 使用 WorkManager:它自动执行满足约束条件的任务,无需关注设备 API 级别。...PeriodicWorkRequest newsWorkRequest = new PeriodicWorkRequest.Builder(NewsWorker.class, 1, TimeUnit.HOURS...本案例展示了 WorkManager 的实际应用和如何选择合适的后台任务调度技术。

    26510

    使用rdesktop来Windows和Linux之间共享数据

    Windows机器的IP地址是a.b.c.d, 需要以用户username登录,则可以这样运行rdesktop命令: rdesktop -u username a.b.c.d 如果你想直接在命令里面使用用户的登录密码...,则使用-p选项: rdesktop -u username a.b.c.d -p my-password 如果你想设置登录后的窗口的大小,则采用-g选项: rdesktop -u username...a.b.c.d -p my-password -g 1200x900 登录后你会感觉字体显示比较怪,看着很不舒服,可以使用-x选项来是字体变得光滑: rdesktop -u username a.b.c.d...共享文件 一个常见的需求是Windows和Linux系统上共享文件。Samba服务可以解决这个问题,但配置比较复杂。这里我们采用rdesktop来完成这个任务。...设置好之后,就可以Windows和Linux之间通过Pictures目录传输和共享文件了。

    4.5K10
    领券