android–WorkManager– 如何按顺序执行作业

android–WorkManager– 如何按顺序执行作业,第1张

概述我有一个服务侦听传入的FCM通知.收到此类通知后,我使用WorkManager运行作业.当同时收到多个通知时,如何确保当时只执行一个作业?作业应按顺序执行.在这种情况下,我想发送短信,这些不能同时发送.(请注意,在发送短信之前和之后,我会在此作业中执行其他类似的http请求,这就是为什么我

我有一个服务侦听传入的FCM通知.收到此类通知后,我使用WorkManager运行作业.

当同时收到多个通知时,如何确保当时只执行一个作业?作业应按顺序执行.在这种情况下,我想发送短信,这些不能同时发送. (请注意,在发送短信之前和之后,我会在此作业中执行其他类似的http请求,这就是为什么我决定为它创建一个作业,而不是直接从服务发送短信.)

public class MyFirebaseMessagingService extends FirebaseMessagingService {    public voID onMessageReceived(RemoteMessage remoteMessage) {        //...        OneTimeWorkRequest sendSmsWorker = new OneTimeWorkRequest.Builder(SendSmsWorker.class).build();        WorkManager.getInstance().enqueue(sendSmsWorker);        //...    }}

我已经检查了WorkManager文档中的高级部分;它提到了链式序列,但是这些必须明确地链接到彼此(beginWith / then / then / …).

解决方法:

您需要将作业创建为具有相同组名的OneTimeWorkRequest,并将它们作为APPEND的唯一工作排入队列.
这将使所有作业附加到同一个链并按顺序执行.

请注意,您应该始终返回Result.SUCCESS或Result.RETRY.返回Result.FAILURE将取消所有已排队的作业.
如果您需要知道某个作业是否失败,那么您可以在worker setoutputData中设置一个自定义标志来处理您可能需要的这种情况.

final String JOB_GROUP_name = "your_jobs_group_name";......OneTimeWorkRequest request = new OneTimeWorkRequest.Builder(YOUR_WORK.class)    .setinputData(YOUR_WORK_DATA_BUILDER.build())    .build();final WorkManager workManager = WorkManager.getInstance();WorkContinuation work = workManager.beginUniqueWork(JOB_GROUP_name, ExistingWorkPolicy.APPEND, request);work.enqueue();
总结

以上是内存溢出为你收集整理的android – WorkManager – 如何按顺序执行作业全部内容,希望文章能够帮你解决android – WorkManager – 如何按顺序执行作业所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1115269.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存