diff --git a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java index f8b53b345..f79e45688 100644 --- a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java +++ b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java @@ -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()); diff --git a/app/src/main/java/org/fdroid/fdroid/receiver/DeviceStorageReceiver.java b/app/src/main/java/org/fdroid/fdroid/receiver/DeviceStorageReceiver.java index 6e0d10c18..08b33d394 100644 --- a/app/src/main/java/org/fdroid/fdroid/receiver/DeviceStorageReceiver.java +++ b/app/src/main/java/org/fdroid/fdroid/receiver/DeviceStorageReceiver.java @@ -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); } diff --git a/app/src/main/java/org/fdroid/fdroid/views/PreferencesFragment.java b/app/src/main/java/org/fdroid/fdroid/views/PreferencesFragment.java index e81734779..4caf90faa 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/PreferencesFragment.java +++ b/app/src/main/java/org/fdroid/fdroid/views/PreferencesFragment.java @@ -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; diff --git a/app/src/main/java/org/fdroid/fdroid/work/CleanCacheWorker.java b/app/src/main/java/org/fdroid/fdroid/work/CleanCacheWorker.java index a6407d84e..e5ba902f4 100644 --- a/app/src/main/java/org/fdroid/fdroid/work/CleanCacheWorker.java +++ b/app/src/main/java/org/fdroid/fdroid/work/CleanCacheWorker.java @@ -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() { diff --git a/app/src/main/java/org/fdroid/fdroid/work/WorkUtils.java b/app/src/main/java/org/fdroid/fdroid/work/WorkUtils.java deleted file mode 100644 index 1314231ff..000000000 --- a/app/src/main/java/org/fdroid/fdroid/work/WorkUtils.java +++ /dev/null @@ -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."); - } -}