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

Commit 3653a3de authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Runs the A11yManagerService package monitor on a dedicated thread." into main

parents 21956caf dca77daf
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -191,6 +191,16 @@ flag {
    }
}

flag {
    name: "package_monitor_dedicated_thread"
    namespace: "accessibility"
    description: "Runs the A11yManagerService PackageMonitor on a dedicated thread"
    bug: "348138695"
    metadata {
        purpose: PURPOSE_BUGFIX
    }
}

flag {
    name: "manager_package_monitor_logic_fix"
    namespace: "accessibility"
+14 −1
Original line number Diff line number Diff line
@@ -116,6 +116,7 @@ import android.os.Binder;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
@@ -901,7 +902,19 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
    private void registerBroadcastReceivers() {
        // package changes
        mPackageMonitor = new ManagerPackageMonitor(this);
        mPackageMonitor.register(mContext, null,  UserHandle.ALL, true);
        final Looper packageMonitorLooper;
        if (Flags.packageMonitorDedicatedThread()) {
            // Use a dedicated thread because the default BackgroundThread used by PackageMonitor
            // is shared by other components and can get busy, causing a delay and eventual ANR when
            // responding to broadcasts sent to this PackageMonitor.
            HandlerThread packageMonitorThread = new HandlerThread(LOG_TAG + " PackageMonitor",
                    Process.THREAD_PRIORITY_BACKGROUND);
            packageMonitorThread.start();
            packageMonitorLooper = packageMonitorThread.getLooper();
        } else {
            packageMonitorLooper = null;
        }
        mPackageMonitor.register(mContext, packageMonitorLooper,  UserHandle.ALL, true);

        // user change and unlock
        IntentFilter intentFilter = new IntentFilter();