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

Commit ebfb921c authored by Kweku Adams's avatar Kweku Adams
Browse files

Modify app scheduling module thread.

Shift the dedicated thread to default priority
and rename it to reflect what it covers.

Bug: 268097442
Test: atest AppStandbyControllerTests
Test: atest CtsAlarmManagerTestCases
Test: atest CtsJobSchedulerTestCases
Test: atest frameworks/base/services/tests/mockingservicestests/src/com/android/server/alarm
Test: atest frameworks/base/services/tests/mockingservicestests/src/com/android/server/job
Test: atest frameworks/base/services/tests/mockingservicestests/src/com/android/server/tare
Test: atest frameworks/base/services/tests/servicestests/src/com/android/server/job
Test: atest frameworks/base/services/tests/servicestests/src/com/android/server/tare
Change-Id: Id69dd108c332329da16c0228aa473965b253b2b8
parent ae3f0067
Loading
Loading
Loading
Loading
+14 −13
Original line number Diff line number Diff line
@@ -20,29 +20,30 @@ import android.os.Handler;
import android.os.HandlerExecutor;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.Process;
import android.os.Trace;

import java.util.concurrent.Executor;

/**
 * Shared singleton background thread.
 * Shared singleton default priority thread for the app scheduling module.
 *
 * @see com.android.internal.os.BackgroundThread
 */
public final class JobSchedulerBackgroundThread extends HandlerThread {
public final class AppSchedulingModuleThread extends HandlerThread {
    private static final long SLOW_DISPATCH_THRESHOLD_MS = 10_000;
    private static final long SLOW_DELIVERY_THRESHOLD_MS = 30_000;
    private static JobSchedulerBackgroundThread sInstance;
    private static AppSchedulingModuleThread sInstance;
    private static Handler sHandler;
    private static Executor sHandlerExecutor;

    private JobSchedulerBackgroundThread() {
        super("jobscheduler.bg", android.os.Process.THREAD_PRIORITY_BACKGROUND);
    private AppSchedulingModuleThread() {
        super("appscheduling.default", Process.THREAD_PRIORITY_DEFAULT);
    }

    private static void ensureThreadLocked() {
        if (sInstance == null) {
            sInstance = new JobSchedulerBackgroundThread();
            sInstance = new AppSchedulingModuleThread();
            sInstance.start();
            final Looper looper = sInstance.getLooper();
            looper.setTraceTag(Trace.TRACE_TAG_SYSTEM_SERVER);
@@ -53,25 +54,25 @@ public final class JobSchedulerBackgroundThread extends HandlerThread {
        }
    }

    /** Returns the JobSchedulerBackgroundThread singleton */
    public static JobSchedulerBackgroundThread get() {
        synchronized (JobSchedulerBackgroundThread.class) {
    /** Returns the AppSchedulingModuleThread singleton */
    public static AppSchedulingModuleThread get() {
        synchronized (AppSchedulingModuleThread.class) {
            ensureThreadLocked();
            return sInstance;
        }
    }

    /** Returns the singleton handler for JobSchedulerBackgroundThread */
    /** Returns the singleton handler for AppSchedulingModuleThread */
    public static Handler getHandler() {
        synchronized (JobSchedulerBackgroundThread.class) {
        synchronized (AppSchedulingModuleThread.class) {
            ensureThreadLocked();
            return sHandler;
        }
    }

    /** Returns the singleton handler executor for JobSchedulerBackgroundThread */
    /** Returns the singleton handler executor for AppSchedulingModuleThread */
    public static Executor getExecutor() {
        synchronized (JobSchedulerBackgroundThread.class) {
        synchronized (AppSchedulingModuleThread.class) {
            ensureThreadLocked();
            return sHandlerExecutor;
        }
+4 −4
Original line number Diff line number Diff line
@@ -1327,7 +1327,7 @@ public class DeviceIdleController extends SystemService
                IDLE_AFTER_INACTIVE_TIMEOUT = DEFAULT_IDLE_AFTER_INACTIVE_TIMEOUT_SMALL_BATTERY;
            }
            DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_DEVICE_IDLE,
                    JobSchedulerBackgroundThread.getExecutor(), this);
                    AppSchedulingModuleThread.getExecutor(), this);
            // Load all the constants.
            onPropertiesChanged(DeviceConfig.getProperties(DeviceConfig.NAMESPACE_DEVICE_IDLE));
        }
@@ -2416,7 +2416,7 @@ public class DeviceIdleController extends SystemService
        }

        MyHandler getHandler(DeviceIdleController controller) {
            return controller.new MyHandler(JobSchedulerBackgroundThread.getHandler().getLooper());
            return controller.new MyHandler(AppSchedulingModuleThread.getHandler().getLooper());
        }

        Sensor getMotionSensor() {
@@ -2488,7 +2488,7 @@ public class DeviceIdleController extends SystemService
        mConfigFile = new AtomicFile(new File(getSystemDir(), "deviceidle.xml"));
        mHandler = mInjector.getHandler(this);
        mAppStateTracker = mInjector.getAppStateTracker(context,
                JobSchedulerBackgroundThread.get().getLooper());
                AppSchedulingModuleThread.get().getLooper());
        LocalServices.addService(AppStateTracker.class, mAppStateTracker);
        mUseMotionSensor = mInjector.useMotionSensor();
    }
@@ -2681,7 +2681,7 @@ public class DeviceIdleController extends SystemService
                mLocalActivityTaskManager.registerScreenObserver(mScreenObserver);

                mInjector.getTelephonyManager().registerTelephonyCallback(
                        JobSchedulerBackgroundThread.getExecutor(), mEmergencyCallListener);
                        AppSchedulingModuleThread.getExecutor(), mEmergencyCallListener);

                passWhiteListsToForceAppStandbyTrackerLocked();
                updateInteractivityLocked();
+2 −2
Original line number Diff line number Diff line
@@ -147,12 +147,12 @@ import com.android.internal.util.LocalLog;
import com.android.internal.util.RingBuffer;
import com.android.internal.util.StatLogger;
import com.android.server.AlarmManagerInternal;
import com.android.server.AppSchedulingModuleThread;
import com.android.server.AppStateTracker;
import com.android.server.AppStateTrackerImpl;
import com.android.server.AppStateTrackerImpl.Listener;
import com.android.server.DeviceIdleInternal;
import com.android.server.EventLogTags;
import com.android.server.JobSchedulerBackgroundThread;
import com.android.server.LocalServices;
import com.android.server.SystemClockTime;
import com.android.server.SystemClockTime.TimeConfidence;
@@ -4691,7 +4691,7 @@ public class AlarmManagerService extends SystemService {

        void registerDeviceConfigListener(DeviceConfig.OnPropertiesChangedListener listener) {
            DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_ALARM_MANAGER,
                    JobSchedulerBackgroundThread.getExecutor(), listener);
                    AppSchedulingModuleThread.getExecutor(), listener);
        }
    }

+2 −2
Original line number Diff line number Diff line
@@ -62,7 +62,7 @@ import com.android.internal.app.IBatteryStats;
import com.android.internal.app.procstats.ProcessStats;
import com.android.internal.util.MemInfoReader;
import com.android.internal.util.StatLogger;
import com.android.server.JobSchedulerBackgroundThread;
import com.android.server.AppSchedulingModuleThread;
import com.android.server.LocalServices;
import com.android.server.job.controllers.JobStatus;
import com.android.server.job.controllers.StateController;
@@ -499,7 +499,7 @@ class JobConcurrencyManager {
        mInjector = injector;
        mNotificationCoordinator = new JobNotificationCoordinator();

        mHandler = JobSchedulerBackgroundThread.getHandler();
        mHandler = AppSchedulingModuleThread.getHandler();

        mGracePeriodObserver = new GracePeriodObserver(mContext);
        mShouldRestrictBgUser = mContext.getResources().getBoolean(
+2 −2
Original line number Diff line number Diff line
@@ -105,10 +105,10 @@ import com.android.internal.os.SomeArgs;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.DumpUtils;
import com.android.internal.util.FrameworkStatsLog;
import com.android.server.AppSchedulingModuleThread;
import com.android.server.AppStateTracker;
import com.android.server.AppStateTrackerImpl;
import com.android.server.DeviceIdleInternal;
import com.android.server.JobSchedulerBackgroundThread;
import com.android.server.LocalServices;
import com.android.server.job.JobSchedulerServiceDumpProto.PendingJob;
import com.android.server.job.controllers.BackgroundJobsController;
@@ -411,7 +411,7 @@ public class JobSchedulerService extends com.android.server.SystemService
            EconomyManagerInternal.TareStateChangeListener {
        public void start() {
            DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_JOB_SCHEDULER,
                    JobSchedulerBackgroundThread.getExecutor(), this);
                    AppSchedulingModuleThread.getExecutor(), this);
            final EconomyManagerInternal economyManagerInternal =
                    LocalServices.getService(EconomyManagerInternal.class);
            economyManagerInternal
Loading