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

Commit a68a2864 authored by Fyodor Kupolov's avatar Fyodor Kupolov
Browse files

Do not call setQuietModeEnabled from the main thread

Call into startUserInBackgroundWithListener->onBeforeStartUser sometimes
can be blocked for a long time if there is an ongoing dexopt operation.

Instead call it from bg thread.

Test: manual
Bug: 72692931
Change-Id: I872c3a2baf6e5ff95aab186f7a8008afec7533d6
parent d21e8d8b
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -88,6 +88,7 @@ import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.app.IAppOpsService;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.os.BackgroundThread;
import com.android.internal.util.DumpUtils;
import com.android.internal.util.FastXmlSerializer;
import com.android.internal.util.Preconditions;
@@ -387,7 +388,9 @@ public class UserManagerService extends IUserManager.Stub {
            }
            final IntentSender target = intent.getParcelableExtra(Intent.EXTRA_INTENT);
            final int userHandle = intent.getIntExtra(Intent.EXTRA_USER_ID, UserHandle.USER_NULL);
            setQuietModeEnabled(userHandle, false, target);
            // Call setQuietModeEnabled on bg thread to avoid ANR
            BackgroundThread.getHandler()
                    .post(() -> setQuietModeEnabled(userHandle, false, target));
        }
    };