Updated work manager

pull/155/head
M66B 6 years ago
parent 9ef222c4c6
commit 1ae23fb11f

@ -108,7 +108,7 @@ dependencies {
def room_version = "2.0.0" def room_version = "2.0.0"
def paging_version = "2.1.0" def paging_version = "2.1.0"
def preference_version = "1.0.0" def preference_version = "1.0.0"
def work_version = "2.0.1" def work_version = "2.1.0-alpha01"
def exif_version = "1.0.0" def exif_version = "1.0.0"
def billingclient_version = "1.2.2" def billingclient_version = "1.2.2"
def javamail_version = "1.6.3" def javamail_version = "1.6.3"

@ -151,7 +151,7 @@ public class ServiceSynchronize extends LifecycleService {
} }
}); });
WorkerCleanup.queue(); WorkerCleanup.queue(this);
} }
@Override @Override
@ -169,7 +169,7 @@ public class ServiceSynchronize extends LifecycleService {
Log.e(ex); Log.e(ex);
} }
WorkerCleanup.cancel(); WorkerCleanup.cancel(this);
stopForeground(true); stopForeground(true);

@ -6,8 +6,8 @@ import android.os.Build;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.work.Constraints; import androidx.work.Constraints;
import androidx.work.ExistingPeriodicWorkPolicy;
import androidx.work.PeriodicWorkRequest; import androidx.work.PeriodicWorkRequest;
import androidx.work.WorkInfo;
import androidx.work.WorkManager; import androidx.work.WorkManager;
import androidx.work.Worker; import androidx.work.Worker;
import androidx.work.WorkerParameters; import androidx.work.WorkerParameters;
@ -21,8 +21,6 @@ import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import static android.os.Process.THREAD_PRIORITY_BACKGROUND;
public class WorkerCleanup extends Worker { public class WorkerCleanup extends Worker {
private static final int CLEANUP_INTERVAL = 4; // hours private static final int CLEANUP_INTERVAL = 4; // hours
private static final long CACHE_IMAGE_DURATION = 3 * 24 * 3600 * 1000L; // milliseconds private static final long CACHE_IMAGE_DURATION = 3 * 24 * 3600 * 1000L; // milliseconds
@ -31,11 +29,13 @@ public class WorkerCleanup extends Worker {
public WorkerCleanup(@NonNull Context context, @NonNull WorkerParameters workerParams) { public WorkerCleanup(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams); super(context, workerParams);
Log.i("Instance " + getName());
} }
@NonNull @NonNull
@Override @Override
public Result doWork() { public Result doWork() {
Log.i("Running " + getName());
cleanup(getApplicationContext(), false); cleanup(getApplicationContext(), false);
return Result.success(); return Result.success();
} }
@ -43,7 +43,6 @@ public class WorkerCleanup extends Worker {
static void cleanup(Context context, boolean manual) { static void cleanup(Context context, boolean manual) {
DB db = DB.getInstance(context); DB db = DB.getInstance(context);
try { try {
Thread.currentThread().setPriority(THREAD_PRIORITY_BACKGROUND);
Log.i("Start cleanup manual=" + manual); Log.i("Start cleanup manual=" + manual);
// Cleanup folders // Cleanup folders
@ -160,37 +159,30 @@ public class WorkerCleanup extends Worker {
} }
} }
static void queue() { static void queue(Context context) {
String tag = WorkerCleanup.class.getSimpleName(); Log.i("Queuing " + getName());
Log.i("Queuing " + tag);
try {
for (WorkInfo info : WorkManager.getInstance().getWorkInfosByTag(tag).get())
if (!info.getState().isFinished()) {
Log.i("Already queued " + tag);
return;
}
} catch (Throwable ex) {
Log.w(ex);
}
Constraints.Builder constraints = new Constraints.Builder(); Constraints.Builder constraints = new Constraints.Builder();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !BuildConfig.DEBUG) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
constraints.setRequiresDeviceIdle(true); constraints.setRequiresDeviceIdle(true);
PeriodicWorkRequest workRequest = PeriodicWorkRequest workRequest =
new PeriodicWorkRequest.Builder(WorkerCleanup.class, CLEANUP_INTERVAL, TimeUnit.HOURS) new PeriodicWorkRequest.Builder(WorkerCleanup.class, CLEANUP_INTERVAL, TimeUnit.HOURS)
.addTag(tag)
.setConstraints(constraints.build()) .setConstraints(constraints.build())
.build(); .build();
WorkManager.getInstance().enqueue(workRequest); WorkManager.getInstance(context)
.enqueueUniquePeriodicWork(getName(), ExistingPeriodicWorkPolicy.KEEP, workRequest);
Log.i("Queued " + getName());
}
Log.i("Queued " + tag); static void cancel(Context context) {
Log.i("Cancelling " + getName());
WorkManager.getInstance(context).cancelUniqueWork(getName());
Log.i("Cancelled " + getName());
} }
static void cancel() { private static String getName() {
String tag = WorkerCleanup.class.getSimpleName(); return WorkerCleanup.class.getSimpleName();
Log.i("Cancelling " + tag);
WorkManager.getInstance().cancelAllWorkByTag(tag);
} }
} }

Loading…
Cancel
Save