检查 WorkManager 状态
Check if WorkManager status
我用了这个例子:
但我的代码总是returns false:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("DTAG", "scheduled: " + isWorkScheduled(WORKER_TAG));
PeriodicWorkRequest.Builder myWorkBuilder = new PeriodicWorkRequest.Builder(FetchFeedWorker.class, 30, TimeUnit.MINUTES);
PeriodicWorkRequest photoCheckWork = myWorkBuilder.build();
WorkManager instance = WorkManager.getInstance();
instance.enqueueUniquePeriodicWork(WORKER_TAG, ExistingPeriodicWorkPolicy.KEEP, photoCheckWork);
Log.d("DTAG", "scheduled: " + isWorkScheduled(WORKER_TAG));
}
private boolean isWorkScheduled(String tag) {
WorkManager instance = WorkManager.getInstance();
ListenableFuture<List<WorkInfo>> statuses = instance.getWorkInfosByTag(tag);
try {
boolean running = false;
List<WorkInfo> workInfoList = statuses.get();
for (WorkInfo workInfo : workInfoList) {
WorkInfo.State state = workInfo.getState();
running = state == WorkInfo.State.RUNNING | state == WorkInfo.State.ENQUEUED;
}
return running;
} catch (ExecutionException e) {
e.printStackTrace();
return false;
} catch (InterruptedException e) {
e.printStackTrace();
return false;
}
}
日志:
2020-02-24 17:45:26.352 5841-5841/com.michlindevelopment.rssreader D/DTAG: scheduled: false
2020-02-24 17:45:26.365 5841-5841/com.michlindevelopment.rssreader D/DTAG: scheduled: false
您正在按唯一名称排队,但通过(不存在的)标签查找它。请改用 https://developer.android.com/reference/androidx/work/WorkManager#getWorkInfosForUniqueWork(java.lang.String)。
我用了这个例子:
但我的代码总是returns false:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("DTAG", "scheduled: " + isWorkScheduled(WORKER_TAG));
PeriodicWorkRequest.Builder myWorkBuilder = new PeriodicWorkRequest.Builder(FetchFeedWorker.class, 30, TimeUnit.MINUTES);
PeriodicWorkRequest photoCheckWork = myWorkBuilder.build();
WorkManager instance = WorkManager.getInstance();
instance.enqueueUniquePeriodicWork(WORKER_TAG, ExistingPeriodicWorkPolicy.KEEP, photoCheckWork);
Log.d("DTAG", "scheduled: " + isWorkScheduled(WORKER_TAG));
}
private boolean isWorkScheduled(String tag) {
WorkManager instance = WorkManager.getInstance();
ListenableFuture<List<WorkInfo>> statuses = instance.getWorkInfosByTag(tag);
try {
boolean running = false;
List<WorkInfo> workInfoList = statuses.get();
for (WorkInfo workInfo : workInfoList) {
WorkInfo.State state = workInfo.getState();
running = state == WorkInfo.State.RUNNING | state == WorkInfo.State.ENQUEUED;
}
return running;
} catch (ExecutionException e) {
e.printStackTrace();
return false;
} catch (InterruptedException e) {
e.printStackTrace();
return false;
}
}
日志:
2020-02-24 17:45:26.352 5841-5841/com.michlindevelopment.rssreader D/DTAG: scheduled: false
2020-02-24 17:45:26.365 5841-5841/com.michlindevelopment.rssreader D/DTAG: scheduled: false
您正在按唯一名称排队,但通过(不存在的)标签查找它。请改用 https://developer.android.com/reference/androidx/work/WorkManager#getWorkInfosForUniqueWork(java.lang.String)。