Ash*_*nge 7 android android-workmanager
安卓版本:8.1.0
设备:Infinix X604B
工作管理器:1.0.0-alpha11(最新版本)
安排一个 PeriodicWorkRequest 在每 15 分钟后运行一次。工作请求每 15 分钟运行一次,持续大约一小时。然后 PeriodicWorkRequest 停止工作。在 8 小时内,根本没有安排后台工作。我没有杀死我的应用程序,它在后台。
当我将应用程序带回前台时,PeriodicWorkRequest 再次运行后台任务。在我将我的应用程序置于后台后,没有重复的类似经验。
我为我的应用禁用了电池优化。
这是 My Worker 类示例。
class TestWorker extends Worker {
public TestWorker(
@NonNull Context context,
@NonNull WorkerParameters params) {
super(context, params);
}
@NonNull
@Override
public Result doWork() {
// Adding timestamp of background execution to firestore.
Map<String, String> value = new TreeMap<>();
SimpleDateFormat df = new SimpleDateFormat("hh:mm");
String dateFormat = df.format(Calendar.getInstance().getTime());
value.put("time", dateFormat);
FirebaseFirestore.getInstance()
.collection("my-collection")
.add(value);
return Result.SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
}
我是这样称呼它的:
PeriodicWorkRequest.Builder testBuilder =
new PeriodicWorkRequest.Builder(TestWorker.class, 15,
TimeUnit.MINUTES);
PeriodicWorkRequest testWork = testBuilder.build();
WorkManager.getInstance().enqueue(testWork);
Run Code Online (Sandbox Code Playgroud)
您可以从如下独特的定期工作开始,
WorkManager.getInstance().enqueueUniquePeriodicWork(UNIQUE_ID, ExistingPeriodicWorkPolicy.REPLACE, testWork);
Run Code Online (Sandbox Code Playgroud)
这里,UNIQUE_ID是一个字符串,它将检查您的工作人员的唯一性,并替换现有的工作人员(如果它已存在于定期工作的队列中)。
请在此处查看工人政策。
并且不要忘记向您的工作实例添加相同的标签,例如:
PeriodicWorkRequest.Builder testBuilder =
new PeriodicWorkRequest.Builder(TestWorker.class, 15, TimeUnit.MINUTES);
PeriodicWorkRequest testWork = testBuilder.addTag(UNIQUE_ID).build(); // Set the same string tag for worker.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3683 次 |
| 最近记录: |