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

Commit 34618b58 authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

Skip cancelling jobs with FLAG_WILL_BE_FOREGROUND.

When FLAG_WILL_BE_FOREGROUND is set on a job (such as a download), we
need to treat the job as if it had a foreground service running so
it can continue making forward progress.  We already ignore the device
idle state when offering to start the job, so this just avoids the
hiccup of stopping the job only to restart it a minute later.

Bug: 26571724
Change-Id: I348903dd3a7dd7104b0c1bf4310e2a48655d2588
parent 6df8a9a8
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -662,11 +662,13 @@ public final class JobSchedulerService extends com.android.server.SystemService
    public void onDeviceIdleStateChanged(boolean deviceIdle) {
        synchronized (mLock) {
            if (deviceIdle) {
                // When becoming idle, make sure no jobs are actively running.
                // When becoming idle, make sure no jobs are actively running,
                // except those using the idle exemption flag.
                for (int i=0; i<mActiveServices.size(); i++) {
                    JobServiceContext jsc = mActiveServices.get(i);
                    final JobStatus executing = jsc.getRunningJob();
                    if (executing != null) {
                    if (executing != null
                            && (executing.getFlags() & JobInfo.FLAG_WILL_BE_FOREGROUND) == 0) {
                        jsc.cancelExecutingJob(JobParameters.REASON_DEVICE_IDLE);
                    }
                }