Как очистить WorkStatus, созданный WorkManager в Android? - PullRequest
0 голосов
/ 13 июня 2018

Я создаю OneTimeWorkRequest Когда я использую Android-Arch WorkManager.

Я могу смотреть WorkStatus наблюдателем, как это

final WorkManager workManager = WorkManager.getInstance();
final LiveData<List<WorkStatus>> workStatus =
    workManager.getStatusesByTag(DailyWorker.DAILY_WORK);
observer = new Observer<List<WorkStatus>>() {
  @Override public void onChanged(@Nullable List<WorkStatus> workStatuses) {
    Log.d("WorkManager", "onChanged  = workStatuses = " + workStatuses);
    if (workStatuses == null || workStatuses.size() == 0) {
      //DailyWorker.createNewPeriodWork();
    } else {
      Log.d("WorkManager ", "onChanged  = workStatuses.size() = " + workStatuses.size());
      for (int i = 0; i < workStatuses.size(); i++) {
        Log.d("WorkManager ", "onChanged Work Status Id: " + workStatuses.get(i).getId());
        Log.d("WorkManager ", "onChanged Work Status State: " + workStatuses.get(i).getState());
      }
    }
    workStatus.removeObserver(observer);
  }
};
workStatus.observe(this, observer);

Моя версия Android-арки android.arch.work:work-runtime:1.0.0-alpha02

Но в списке много WorkStatus, некоторые SUCCEEDED, некоторые ENQUEUED, некоторые CANCELLED, и номер списка продолжает увеличиваться.как очистить список WorkStatus?

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Вы можете вызвать WorkRequest # keepResultsForAtLeast, когда выполняете работу

0 голосов
/ 29 июня 2018

Вы можете вызвать метод pruneWork() в WorkManager, чтобы очистить List<WorkStatus>.

myWorkManager.pruneWork();

Надеюсь, это поможет!

...