首页 > 解决方案 > 应用程序被杀死时未触发 Android WorkManager 定期任务

问题描述

我的目标是每 12 小时更新一次我的应用令牌(使用网络请求),无论应用是在后台还是被杀死,所以我使用 workmanager 来解决这个问题。但是定期任务仅在应用程序处于后台或打开状态时才起作用,但是当我终止应用程序时,定期任务停止以更新我的应用程序令牌。

这是我的代码:

WorkManager mWorkManager;
                    mWorkManager = WorkManager.getInstance(context);
                    
                    Constraints constraints = new Constraints.Builder()
                            .setRequiredNetworkType(NetworkType.CONNECTED)
                            .build();


                    PeriodicWorkRequest periodicSyncDataWork =
                            new PeriodicWorkRequest.Builder(AccessTokenUpdateWorker.class, 12, TimeUnit.HOURS)
                                    .addTag("ACCESS_TOKEN_SYNC_DATA")
                                    .setConstraints(constraints)
                                    .setInitialDelay(5, TimeUnit.MINUTES)
                                    // setting a backoff on case the work needs to retry
                                    .setBackoffCriteria(BackoffPolicy.LINEAR, PeriodicWorkRequest.MIN_BACKOFF_MILLIS, TimeUnit.MILLISECONDS)
                                    .build();
                    mWorkManager.enqueueUniquePeriodicWork(
                            "ACCESS_TOKEN_SYNC_DATA",
                            ExistingPeriodicWorkPolicy.KEEP, //Existing Periodic Work policy
                            periodicSyncDataWork //work request
                    );

我正在使用 workmanager 2.4.0 版本

标签: androidandroid-workmanagerperiodic-task

解决方案


实际上,我的 WorkManager 设置是正确的,但是由于上下文值,Worker 类无法将令牌更新到服务器中。你可以查看我的代码截图。我被分配了错误的上下文,但后来修复了它,现在代码运行完美。

在此处输入图像描述


推荐阅读