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

View File

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

View File

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

View File

@ -6,12 +6,14 @@ import android.os.Process;
import android.system.ErrnoException; import android.system.ErrnoException;
import android.system.Os; import android.system.Os;
import android.system.StructStat; import android.system.StructStat;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi; 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.Worker;
import androidx.work.WorkerParameters; import androidx.work.WorkerParameters;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.Preferences;
import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.Utils;
@ -21,12 +23,40 @@ import java.io.File;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
public class CleanCacheWorker extends Worker { 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) { public CleanCacheWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, 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 @NonNull
@Override @Override
public Result doWork() { 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.");
}
}