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

Commit ed90137c authored by Xin Guan's avatar Xin Guan
Browse files

Move DeviceIdleJobsController broadcast receiver off the main thread

Use the dedicated scheduling thread to avoid blocking the main thread

Bug: 414140833
Test: manual check
Test: atest CtsJobSchedulerTestCases:android.jobscheduler.cts.JobThrottlingTest
Flag: com.android.server.job.deviceidlejobcontroller_off_main_thread
Change-Id: Ibd92aaab7fc7a9c10ebdfe16400ad1c96b48b347
parent af980cf5
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -117,4 +117,13 @@ flag {
    }
}

flag {
    name: "deviceidlejobcontroller_off_main_thread"
    namespace: "backstage_power"
    description: "Move the broadcast receiver in DeviceIdleJobController off the main thread."
    bug: "414140833"
    metadata {
        purpose: PURPOSE_BUGFIX
    }
}
+3 −1
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import com.android.internal.util.ArrayUtils;
import com.android.server.AppSchedulingModuleThread;
import com.android.server.DeviceIdleInternal;
import com.android.server.LocalServices;
import com.android.server.job.Flags;
import com.android.server.job.JobSchedulerService;
import com.android.server.job.StateControllerProto;
import com.android.server.job.StateControllerProto.DeviceIdleJobsController.TrackedJob;
@@ -154,7 +155,8 @@ public final class DeviceIdleJobsController extends StateController {
        filter.addAction(PowerManager.ACTION_POWER_SAVE_WHITELIST_CHANGED);
        filter.addAction(PowerManager.ACTION_POWER_SAVE_TEMP_WHITELIST_CHANGED);
        mContext.registerReceiverAsUser(
                mBroadcastReceiver, UserHandle.ALL, filter, null, null);
                mBroadcastReceiver, UserHandle.ALL, filter, null,
                Flags.deviceidlejobcontrollerOffMainThread() ? mHandler : null);
    }

    void updateIdleMode(boolean enabled) {