move static helper method into its class: CleanCacheWorker

This commit is contained in:
Hans-Christoph Steiner 2021-01-05 10:47:18 +01:00
parent fa7e7fccdc
commit 2e10c7ba03
5 changed files with 38 additions and 58 deletions

View File

@ -80,7 +80,6 @@ import org.fdroid.fdroid.net.HttpDownloader;
import org.fdroid.fdroid.net.ImageLoaderForUIL;
import org.fdroid.fdroid.panic.HidingManager;
import org.fdroid.fdroid.work.CleanCacheWorker;
import org.fdroid.fdroid.work.WorkUtils;
import java.io.IOException;
import java.nio.ByteBuffer;
@ -427,7 +426,7 @@ public class FDroidApp extends Application {
}
});
WorkUtils.scheduleCleanCache(this);
CleanCacheWorker.schedule(this);
notificationHelper = new NotificationHelper(getApplicationContext());

View File

@ -6,7 +6,7 @@ import android.content.Intent;
import org.fdroid.fdroid.DeleteCacheService;
import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.work.WorkUtils;
import org.fdroid.fdroid.work.CleanCacheWorker;
public class DeviceStorageReceiver extends BroadcastReceiver {
@Override
@ -19,7 +19,7 @@ public class DeviceStorageReceiver extends BroadcastReceiver {
int percentageFree = Utils.getPercent(Utils.getImageCacheDirAvailableMemory(context),
Utils.getImageCacheDirTotalMemory(context));
if (percentageFree > 2) {
WorkUtils.scheduleCleanCache(context);
CleanCacheWorker.schedule(context);
} else {
DeleteCacheService.deleteAll(context);
}

View File

@ -57,7 +57,7 @@ import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.data.RepoProvider;
import org.fdroid.fdroid.installer.InstallHistoryService;
import org.fdroid.fdroid.installer.PrivilegedInstaller;
import org.fdroid.fdroid.work.WorkUtils;
import org.fdroid.fdroid.work.CleanCacheWorker;
import info.guardianproject.netcipher.proxy.OrbotHelper;
@ -304,7 +304,7 @@ public class PreferencesFragment extends PreferenceFragmentCompat
entrySummary(key);
if (changing
&& currentKeepCacheTime != Preferences.get().getKeepCacheTime()) {
WorkUtils.scheduleCleanCache(requireContext());
CleanCacheWorker.schedule(requireContext());
}
break;

View File

@ -6,12 +6,14 @@ import android.os.Process;
import android.system.ErrnoException;
import android.system.Os;
import android.system.StructStat;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.work.Constraints;
import androidx.work.ExistingPeriodicWorkPolicy;
import androidx.work.PeriodicWorkRequest;
import androidx.work.WorkManager;
import androidx.work.Worker;
import androidx.work.WorkerParameters;
import org.apache.commons.io.FileUtils;
import org.fdroid.fdroid.Preferences;
import org.fdroid.fdroid.Utils;
@ -21,12 +23,40 @@ import java.io.File;
import java.util.concurrent.TimeUnit;
public class CleanCacheWorker extends Worker {
private static final String TAG = CleanCacheWorker.class.getSimpleName();
public static final String TAG = "CleanCacheWorker";
public CleanCacheWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
}
/**
* Schedule or cancel a work request to update the app index, according to the
* current preferences. Should be called a) at boot, b) if the preference
* is changed, or c) on startup, in case we get upgraded.
*/
public static void schedule(@NonNull final Context context) {
final WorkManager workManager = WorkManager.getInstance(context);
final long keepTime = Preferences.get().getKeepCacheTime();
long interval = TimeUnit.DAYS.toMillis(1);
if (keepTime < interval) {
interval = keepTime;
}
final Constraints.Builder constraintsBuilder = new Constraints.Builder()
.setRequiresCharging(true)
.setRequiresBatteryNotLow(true);
if (Build.VERSION.SDK_INT >= 23) {
constraintsBuilder.setRequiresDeviceIdle(true);
}
final PeriodicWorkRequest cleanCache =
new PeriodicWorkRequest.Builder(CleanCacheWorker.class, interval, TimeUnit.MILLISECONDS)
.setConstraints(constraintsBuilder.build())
.build();
workManager.enqueueUniquePeriodicWork("clean_cache",
ExistingPeriodicWorkPolicy.REPLACE, cleanCache);
Utils.debugLog(TAG, "Scheduled periodic work for cleaning the cache.");
}
@NonNull
@Override
public Result doWork() {

View File

@ -1,49 +0,0 @@
package org.fdroid.fdroid.work;
import android.content.Context;
import android.os.Build;
import androidx.annotation.NonNull;
import androidx.work.Constraints;
import androidx.work.ExistingPeriodicWorkPolicy;
import androidx.work.PeriodicWorkRequest;
import androidx.work.WorkManager;
import org.fdroid.fdroid.Preferences;
import org.fdroid.fdroid.Utils;
import java.util.concurrent.TimeUnit;
public class WorkUtils {
private static final String TAG = WorkUtils.class.getSimpleName();
private WorkUtils() { }
/**
* Schedule or cancel a work request to update the app index, according to the
* current preferences. Should be called a) at boot, b) if the preference
* is changed, or c) on startup, in case we get upgraded.
*/
public static void scheduleCleanCache(@NonNull final Context context) {
final WorkManager workManager = WorkManager.getInstance(context);
final long keepTime = Preferences.get().getKeepCacheTime();
long interval = TimeUnit.DAYS.toMillis(1);
if (keepTime < interval) {
interval = keepTime;
}
final Constraints.Builder constraintsBuilder = new Constraints.Builder()
.setRequiresCharging(true)
.setRequiresBatteryNotLow(true);
if (Build.VERSION.SDK_INT >= 23) {
constraintsBuilder.setRequiresDeviceIdle(true);
}
final PeriodicWorkRequest cleanCache =
new PeriodicWorkRequest.Builder(CleanCacheWorker.class, interval, TimeUnit.MILLISECONDS)
.setConstraints(constraintsBuilder.build())
.build();
workManager.enqueueUniquePeriodicWork("clean_cache",
ExistingPeriodicWorkPolicy.REPLACE, cleanCache);
Utils.debugLog(TAG, "Scheduled periodic work for cleaning the cache.");
}
}