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