move static helper method into its class: CleanCacheWorker
This commit is contained in:
parent
fa7e7fccdc
commit
2e10c7ba03
@ -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());
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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() {
|
||||
|
@ -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.");
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user