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.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());
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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() {
|
||||||
|
@ -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