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

Commit 94de34ce authored by Fengjiang Li's avatar Fengjiang Li Committed by Android (Google) Code Review
Browse files

Merge "[Launcher Jank] Avoid SimpleBroadcastReceiver making binder calls on main thread" into main

parents 4f35222e 1f87d94e
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -205,6 +205,7 @@ public class QuickstepModelDelegate extends ModelDelegate {
        mActive = true;
        mActive = true;
    }
    }


    @WorkerThread
    @Override
    @Override
    public void workspaceLoadComplete() {
    public void workspaceLoadComplete() {
        super.workspaceLoadComplete();
        super.workspaceLoadComplete();
@@ -323,6 +324,7 @@ public class QuickstepModelDelegate extends ModelDelegate {
        }
        }
    }
    }


    @WorkerThread
    @Override
    @Override
    public void destroy() {
    public void destroy() {
        super.destroy();
        super.destroy();
+3 −2
Original line number Original line Diff line number Diff line
@@ -111,6 +111,7 @@ public final class WellbeingModel implements SafeCloseable {
        mWorkerHandler.post(this::initializeInBackground);
        mWorkerHandler.post(this::initializeInBackground);
    }
    }


    @WorkerThread
    private void initializeInBackground() {
    private void initializeInBackground() {
        if (!TextUtils.isEmpty(mWellbeingProviderPkg)) {
        if (!TextUtils.isEmpty(mWellbeingProviderPkg)) {
            mContext.registerReceiver(
            mContext.registerReceiver(
@@ -134,8 +135,8 @@ public final class WellbeingModel implements SafeCloseable {
    public void close() {
    public void close() {
        if (!TextUtils.isEmpty(mWellbeingProviderPkg)) {
        if (!TextUtils.isEmpty(mWellbeingProviderPkg)) {
            mWorkerHandler.post(() -> {
            mWorkerHandler.post(() -> {
                mWellbeingAppChangeReceiver.unregisterReceiverSafely(mContext);
                mWellbeingAppChangeReceiver.unregisterReceiverSafelySync(mContext);
                mAppAddRemoveReceiver.unregisterReceiverSafely(mContext);
                mAppAddRemoveReceiver.unregisterReceiverSafelySync(mContext);
                mContext.getContentResolver().unregisterContentObserver(mContentObserver);
                mContext.getContentResolver().unregisterContentObserver(mContentObserver);
            });
            });
        }
        }
+3 −4
Original line number Original line Diff line number Diff line
@@ -304,7 +304,7 @@ public class TaskbarManager {
                .register(NAV_BAR_KIDS_MODE, mOnSettingsChangeListener);
                .register(NAV_BAR_KIDS_MODE, mOnSettingsChangeListener);
        Log.d(TASKBAR_NOT_DESTROYED_TAG, "registering component callbacks from constructor.");
        Log.d(TASKBAR_NOT_DESTROYED_TAG, "registering component callbacks from constructor.");
        mContext.registerComponentCallbacks(mComponentCallbacks);
        mContext.registerComponentCallbacks(mComponentCallbacks);
        mShutdownReceiver.register(mContext, Intent.ACTION_SHUTDOWN);
        mShutdownReceiver.registerAsync(mContext, Intent.ACTION_SHUTDOWN);
        UI_HELPER_EXECUTOR.execute(() -> {
        UI_HELPER_EXECUTOR.execute(() -> {
            mSharedState.taskbarSystemActionPendingIntent = PendingIntent.getBroadcast(
            mSharedState.taskbarSystemActionPendingIntent = PendingIntent.getBroadcast(
                    mContext,
                    mContext,
@@ -582,8 +582,7 @@ public class TaskbarManager {
    public void destroy() {
    public void destroy() {
        debugWhyTaskbarNotDestroyed("TaskbarManager#destroy()");
        debugWhyTaskbarNotDestroyed("TaskbarManager#destroy()");
        removeActivityCallbacksAndListeners();
        removeActivityCallbacksAndListeners();
        UI_HELPER_EXECUTOR.execute(
        mTaskbarBroadcastReceiver.unregisterReceiverSafelyAsync(mContext);
                () -> mTaskbarBroadcastReceiver.unregisterReceiverSafely(mContext));
        destroyExistingTaskbar();
        destroyExistingTaskbar();
        removeTaskbarRootViewFromWindow();
        removeTaskbarRootViewFromWindow();
        if (mUserUnlocked) {
        if (mUserUnlocked) {
@@ -595,7 +594,7 @@ public class TaskbarManager {
                .unregister(NAV_BAR_KIDS_MODE, mOnSettingsChangeListener);
                .unregister(NAV_BAR_KIDS_MODE, mOnSettingsChangeListener);
        Log.d(TASKBAR_NOT_DESTROYED_TAG, "unregistering component callbacks from destroy().");
        Log.d(TASKBAR_NOT_DESTROYED_TAG, "unregistering component callbacks from destroy().");
        mContext.unregisterComponentCallbacks(mComponentCallbacks);
        mContext.unregisterComponentCallbacks(mComponentCallbacks);
        mContext.unregisterReceiver(mShutdownReceiver);
        mShutdownReceiver.unregisterReceiverSafelyAsync(mContext);
    }
    }


    public @Nullable TaskbarActivityContext getCurrentActivityContext() {
    public @Nullable TaskbarActivityContext getCurrentActivityContext() {
+10 −5
Original line number Original line Diff line number Diff line
@@ -36,6 +36,7 @@ import android.util.SparseIntArray;


import androidx.annotation.NonNull;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.Nullable;
import androidx.annotation.UiThread;


import com.android.launcher3.R;
import com.android.launcher3.R;
import com.android.launcher3.util.SimpleBroadcastReceiver;
import com.android.launcher3.util.SimpleBroadcastReceiver;
@@ -101,7 +102,7 @@ public final class OverviewComponentObserver {
            mConfigChangesMap.append(fallbackComponent.hashCode(), fallbackInfo.configChanges);
            mConfigChangesMap.append(fallbackComponent.hashCode(), fallbackInfo.configChanges);
        } catch (PackageManager.NameNotFoundException ignored) { /* Impossible */ }
        } catch (PackageManager.NameNotFoundException ignored) { /* Impossible */ }


        mUserPreferenceChangeReceiver.register(mContext, ACTION_PREFERRED_ACTIVITY_CHANGED);
        mUserPreferenceChangeReceiver.registerAsync(mContext, ACTION_PREFERRED_ACTIVITY_CHANGED);
        updateOverviewTargets();
        updateOverviewTargets();
    }
    }


@@ -114,6 +115,8 @@ public final class OverviewComponentObserver {
        mOverviewChangeListener = overviewChangeListener;
        mOverviewChangeListener = overviewChangeListener;
    }
    }


    /** Called on {@link TouchInteractionService#onSystemUiFlagsChanged} */
    @UiThread
    public void onSystemUiStateChanged() {
    public void onSystemUiStateChanged() {
        if (mDeviceState.isHomeDisabled() != mIsHomeDisabled) {
        if (mDeviceState.isHomeDisabled() != mIsHomeDisabled) {
            updateOverviewTargets();
            updateOverviewTargets();
@@ -128,6 +131,7 @@ public final class OverviewComponentObserver {
     * Update overview intent and {@link BaseActivityInterface} based off the current launcher home
     * Update overview intent and {@link BaseActivityInterface} based off the current launcher home
     * component.
     * component.
     */
     */
    @UiThread
    private void updateOverviewTargets() {
    private void updateOverviewTargets() {
        ComponentName defaultHome = PackageManagerWrapper.getInstance()
        ComponentName defaultHome = PackageManagerWrapper.getInstance()
                .getHomeActivities(new ArrayList<>());
                .getHomeActivities(new ArrayList<>());
@@ -187,8 +191,9 @@ public final class OverviewComponentObserver {
                unregisterOtherHomeAppUpdateReceiver();
                unregisterOtherHomeAppUpdateReceiver();


                mUpdateRegisteredPackage = defaultHome.getPackageName();
                mUpdateRegisteredPackage = defaultHome.getPackageName();
                mOtherHomeAppUpdateReceiver.registerPkgActions(mContext, mUpdateRegisteredPackage,
                mOtherHomeAppUpdateReceiver.registerPkgActionsAsync(
                        ACTION_PACKAGE_ADDED, ACTION_PACKAGE_CHANGED, ACTION_PACKAGE_REMOVED);
                        mContext, mUpdateRegisteredPackage, ACTION_PACKAGE_ADDED,
                        ACTION_PACKAGE_CHANGED, ACTION_PACKAGE_REMOVED);
            }
            }
        }
        }
        mOverviewChangeListener.accept(mIsHomeAndOverviewSame);
        mOverviewChangeListener.accept(mIsHomeAndOverviewSame);
@@ -198,13 +203,13 @@ public final class OverviewComponentObserver {
     * Clean up any registered receivers.
     * Clean up any registered receivers.
     */
     */
    public void onDestroy() {
    public void onDestroy() {
        mContext.unregisterReceiver(mUserPreferenceChangeReceiver);
        mUserPreferenceChangeReceiver.unregisterReceiverSafelyAsync(mContext);
        unregisterOtherHomeAppUpdateReceiver();
        unregisterOtherHomeAppUpdateReceiver();
    }
    }


    private void unregisterOtherHomeAppUpdateReceiver() {
    private void unregisterOtherHomeAppUpdateReceiver() {
        if (mUpdateRegisteredPackage != null) {
        if (mUpdateRegisteredPackage != null) {
            mContext.unregisterReceiver(mOtherHomeAppUpdateReceiver);
            mOtherHomeAppUpdateReceiver.unregisterReceiverSafelyAsync(mContext);
            mUpdateRegisteredPackage = null;
            mUpdateRegisteredPackage = null;
        }
        }
    }
    }
+2 −6
Original line number Original line Diff line number Diff line
@@ -18,8 +18,6 @@ package com.android.quickstep.util;
import static android.content.Intent.ACTION_TIMEZONE_CHANGED;
import static android.content.Intent.ACTION_TIMEZONE_CHANGED;
import static android.content.Intent.ACTION_TIME_CHANGED;
import static android.content.Intent.ACTION_TIME_CHANGED;


import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;

import android.content.BroadcastReceiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
@@ -64,9 +62,7 @@ public class AsyncClockEventDelegate extends ClockEventDelegate
    private AsyncClockEventDelegate(Context context) {
    private AsyncClockEventDelegate(Context context) {
        super(context);
        super(context);
        mContext = context;
        mContext = context;

        mReceiver.registerAsync(mContext, ACTION_TIME_CHANGED, ACTION_TIMEZONE_CHANGED);
        UI_HELPER_EXECUTOR.execute(() ->
                mReceiver.register(mContext, ACTION_TIME_CHANGED, ACTION_TIMEZONE_CHANGED));
    }
    }


    @Override
    @Override
@@ -127,6 +123,6 @@ public class AsyncClockEventDelegate extends ClockEventDelegate
    public void close() {
    public void close() {
        mDestroyed = true;
        mDestroyed = true;
        SettingsCache.INSTANCE.get(mContext).unregister(mFormatUri, this);
        SettingsCache.INSTANCE.get(mContext).unregister(mFormatUri, this);
        UI_HELPER_EXECUTOR.execute(() -> mReceiver.unregisterReceiverSafely(mContext));
        mReceiver.unregisterReceiverSafelyAsync(mContext);
    }
    }
}
}
Loading