android - Android 工作管理器 PeriodicWorkRequest 不起作用
问题描述
我想设置一个定期任务,每隔 x 小时(不完全是 x 小时,而是至少 x 小时)执行一次。即使在我的应用程序的主要活动被破坏或设备重新启动后,也需要这样做。因此,根据 android 开发人员文档,我选择了相同的工作管理器类。但是代码在第一次执行后不起作用。我的代码是:-
(我正在使用 enqueueUniquePeriodicWork 来避免多个请求)
在主要活动 oncreate:-
Constraints constraints = new Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build();
PeriodicWorkRequest uploadWorkRequest = new PeriodicWorkRequest.Builder(UploadWorker.class,16, TimeUnit.MINUTES)
.setBackoffCriteria(
BackoffPolicy.LINEAR,
OneTimeWorkRequest.MIN_BACKOFF_MILLIS,
TimeUnit.MILLISECONDS)
.addTag("workerTest")
.setConstraints(constraints)
.build();
WorkManager.getInstance().enqueueUniquePeriodicWork("mytag", ExistingPeriodicWorkPolicy.REPLACE, uploadWorkRequest);
上传中
public class UploadWorker extends Worker {
public UploadWorker(
@NonNull Context context,
@NonNull WorkerParameters params) {
super(context, params);
}
@NonNull
@Override
public Result doWork() {
appendLog(Calendar. getInstance().getTime().toString() + "work manager periodic ");
Log.d("TAG","work manager dowork callback");
return Result.success(outputData);
}
public static void appendLog(String text) {
String fileName = Environment.getExternalStorageDirectory() + "/" + "mylogs.txt";
File logFile = new File(fileName);
if (!logFile.exists())
{
try
{
logFile.createNewFile();
}
catch (IOException e)
{
// TODO Auto-generated catch block
Log.d("TAG","Error:- "+e.toString());
e.printStackTrace();
}
}
try
{
//BufferedWriter for performance, true to set append to file flag
BufferedWriter buf = new BufferedWriter(new FileWriter(logFile, true));
buf.append(text);
buf.newLine();
buf.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
Log.d("TAG","Errors:- "+e.toString());
e.printStackTrace();
}
}
我的代码有什么问题?为什么它只运行一次而不是进一步运行?
解决方案
推荐阅读
- arrays - 通过字符串值访问数组
- r - 使用贝叶斯预测 R
- blazor - asp.net core mvc blazor 自动刷新列表
- azure - 直接从 azure blob 存储提供私有文件
- c++ - 从保存在 .txt 文件中的数组加载 3D 立方体
- java - 更新参考实体后有什么方法可以更新其他实体中的列?
- java - 如何根据条件调用不同的 POJO 实例
- python - 为什么不能在 python 3 中构建异或链表?
- php - 您如何计算 XML 文件中的两个节点在一个元素中出现的次数?
- javascript - setState 在 mouseMove 事件上更新样式时导致重新渲染