我是新手,所以如果问题措辞不当,请告诉我!我有一个 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