Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fabf2ff8 authored by Vincent Bourgmayer's avatar Vincent Bourgmayer
Browse files

Add usage of WorkManager to enqueue FullScanWorker in InitializerService

- Instanciate Constraint for the workRequest (Battery not low, and network available)
- Instanciate PeriodicWorkRequest to start FullScanWorker job every 31 minutes with 5 minutes as flex time
- Enqueue the workRequest into WorkManager
- Add the generic Generic work Tag into the work request
- Comment "JobUtils.scheduleScannerJob()" to prevent JobScheduler to run ScannerJob periodically
parent 4ee40790
Loading
Loading
Loading
Loading
+23 −1
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;

import foundation.e.drive.models.SyncedFolder;
import foundation.e.drive.operations.CreateInitialFolderRemoteOperation;
@@ -36,6 +37,7 @@ import foundation.e.drive.receivers.ScreenOffReceiver;
import foundation.e.drive.utils.AppConstants;
import foundation.e.drive.utils.CommonUtils;
import foundation.e.drive.utils.JobUtils;
import foundation.e.drive.work.FullScanWorker;

import static com.owncloud.android.lib.resources.files.FileUtils.PATH_SEPARATOR;
import static foundation.e.drive.utils.AppConstants.INITIALFOLDERS_NUMBER;
@@ -43,6 +45,11 @@ import static foundation.e.drive.utils.AppConstants.MEDIA_SYNCABLE_CATEGORIES;
import static foundation.e.drive.utils.AppConstants.SETTINGS_SYNCABLE_CATEGORIES;

import androidx.annotation.Nullable;
import androidx.work.Constraints;
import androidx.work.NetworkType;
import androidx.work.PeriodicWorkRequest;
import androidx.work.WorkManager;
import androidx.work.WorkRequest;

/**
 * @author Vincent Bourgmayer
@@ -277,9 +284,24 @@ public class InitializerService extends Service implements OnRemoteOperationList
                .putInt( INITIALFOLDERS_NUMBER, mSyncedFolders.size() )
                .apply();

        Constraints constraints = new Constraints.Builder()
                .setRequiredNetworkType(NetworkType.CONNECTED)
                .setRequiresBatteryNotLow(true)
                .build();

        WorkRequest periodicFullScanRequest =
                new PeriodicWorkRequest.Builder(FullScanWorker.class,
                        31, TimeUnit.MINUTES,
                        5, TimeUnit.MINUTES)
                        .setConstraints(constraints)
                        .addTag(AppConstants.WORK_GENERIC_TAG)
                        .build();

        WorkManager.getInstance(this).enqueue(periodicFullScanRequest);

        //all folder have been created
        //JobUtils.stopScheduledJob(appContext, JobUtils.InitializerJobId);
        JobUtils.scheduleScannerJob(appContext);
        //JobUtils.scheduleScannerJob(appContext);

        Log.d(TAG, "RegisterReceiver: screenOffReceiver");
        IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);