Worker 类没有被 OneTimeWorkRequest 触发

发布于 2025-01-18 06:50:22 字数 1163 浏览 1 评论 0原文

我有这个 OneTimeWorkRequest 不会触发我的 SendFeedbackMessageWorker。 工作请求应该用约束“.setRequiredNetworkType(NetworkType.CONNECTED)”触发,但是每当我尝试在没有网络连接的情况下发送消息然后再次连接时,该类永远不会被触发。

有人能指出这是哪里坏了吗?

private void handleFeedbackMessageFailure(Context context, FeedbackMessage message) {

        Constraints constraints4 = new Constraints.Builder()
                .setRequiredNetworkType(NetworkType.CONNECTED)
                .build();
        Data myFeedbackMessage = new Data.Builder()
                .putString("myFeedbackMessageId", message.getId())
                .putString("myFeedbackMessage", message.getFeedbackMessage())
                .putString("myFeedbackPerson", message.getFeedbackPersonName())
                .putString("myFeedbackCreated", message.getCreated().toString())
                .build();

        OneTimeWorkRequest sendFeedbackWorker = new OneTimeWorkRequest.Builder(SendFeedbackMessageWorker.class)
                .setInputData(myFeedbackMessage)
                .setConstraints(constraints4)
                .build();

        WorkManager.getInstance(context).enqueue(
                sendFeedbackWorker
        );

I have this OneTimeWorkRequest that don't trigger my SendFeedbackMessageWorker.
The work request should get triggered with the constraint ".setRequiredNetworkType(NetworkType.CONNECTED)", but whenever I try to send a message without network connected and then connect again, the class is never triggered.

Can anybody point out where this is broken?

private void handleFeedbackMessageFailure(Context context, FeedbackMessage message) {

        Constraints constraints4 = new Constraints.Builder()
                .setRequiredNetworkType(NetworkType.CONNECTED)
                .build();
        Data myFeedbackMessage = new Data.Builder()
                .putString("myFeedbackMessageId", message.getId())
                .putString("myFeedbackMessage", message.getFeedbackMessage())
                .putString("myFeedbackPerson", message.getFeedbackPersonName())
                .putString("myFeedbackCreated", message.getCreated().toString())
                .build();

        OneTimeWorkRequest sendFeedbackWorker = new OneTimeWorkRequest.Builder(SendFeedbackMessageWorker.class)
                .setInputData(myFeedbackMessage)
                .setConstraints(constraints4)
                .build();

        WorkManager.getInstance(context).enqueue(
                sendFeedbackWorker
        );

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

墨离汐 2025-01-25 06:50:22

如下所述,检查JS信息:

httpps:https:// developer。 android.com/topic/libraries/architecture/workmanager/how-to/debugging

使用:
倒入Jobscheduler-

ADB Shell在结果中

检查约束部分中不满意的内容。如果是连接性:

检查您期望的功能(作业信息中的日志的一部分),并将它们与当前的活动网络功能进行比较。

同样,如果没有足够的时间问题 - 您将在约束中看到它。

Check the JS info as described here:

https://developer.android.com/topic/libraries/architecture/workmanager/how-to/debugging

Use:
adb shell dumpsys jobscheduler

In the result - check what is unstatisfied in the Constraints section.

If it is Connectivity:

Check what Capabilities you expect(part of the logs in the job info) and compare them to the current active network Capabilities.

Also if not enough time is the problem - you will see it there in the constraints.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文