小编spa*_*mel的帖子

WorkManager 一次多次执行 enqueueUniquePeriodicWork()?

我是新手,所以如果问题措辞不当,请告诉我!我有一个 Android 应用程序,即使手机处于锁定状态,它也需要大约每 15 分钟执行一次任务。上下文是: - 我的目标是 SDK 23 或更高版本 - 任务 1) 获取用户的位置 2) 使用 OKHttpClient 调用 HTTPS API,然后 3) 将结果发送到 Firestore 数据库

我正在使用 WorkManager 来尝试实现这一目标。但是,问题是每次执行时,都会执行 8-9 次,而且时间很不规律。我可以从 Firestore 条目和 Logcat 中看到这一点。

WorkManager 甚至是完成这项任务的正确方法吗?我在用

implementation "androidx.work:work-runtime:2.0.1"
import androidx.work.PeriodicWorkRequest;
import androidx.work.WorkManager;
import androidx.work.ExistingPeriodicWorkPolicy;
Run Code Online (Sandbox Code Playgroud)

我看到其他人有这个问题:Android Worker 多次执行该作业

//In MainActivity.java: 

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        PeriodicWorkRequest periodicWorkRequest = new PeriodicWorkRequest.Builder(
                PeriodicReadings.class, 15, TimeUnit.MINUTES).build();

        WorkManager.getInstance().enqueueUniquePeriodicWork("PWR", ExistingPeriodicWorkPolicy.REPLACE, periodicWorkRequest);

//In PeriodicReadings.java:

    @NonNull
    @Override
    public Result doWork() {
        getReadings(); //work to be …
Run Code Online (Sandbox Code Playgroud)

java android alarmmanager google-cloud-firestore android-workmanager

5
推荐指数
1
解决办法
733
查看次数