Loading quickstep/src/com/android/launcher3/model/QuickstepModelDelegate.java +2 −0 Original line number Original line Diff line number Diff line Loading @@ -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(); Loading Loading @@ -323,6 +324,7 @@ public class QuickstepModelDelegate extends ModelDelegate { } } } } @WorkerThread @Override @Override public void destroy() { public void destroy() { super.destroy(); super.destroy(); Loading quickstep/src/com/android/launcher3/model/WellbeingModel.java +3 −2 Original line number Original line Diff line number Diff line Loading @@ -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( Loading @@ -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); }); }); } } Loading quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +3 −4 Original line number Original line Diff line number Diff line Loading @@ -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, Loading Loading @@ -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) { Loading @@ -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() { Loading quickstep/src/com/android/quickstep/OverviewComponentObserver.java +10 −5 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); } } Loading @@ -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(); Loading @@ -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<>()); Loading Loading @@ -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); Loading @@ -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; } } } } Loading quickstep/src/com/android/quickstep/util/AsyncClockEventDelegate.java +2 −6 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -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
quickstep/src/com/android/launcher3/model/QuickstepModelDelegate.java +2 −0 Original line number Original line Diff line number Diff line Loading @@ -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(); Loading Loading @@ -323,6 +324,7 @@ public class QuickstepModelDelegate extends ModelDelegate { } } } } @WorkerThread @Override @Override public void destroy() { public void destroy() { super.destroy(); super.destroy(); Loading
quickstep/src/com/android/launcher3/model/WellbeingModel.java +3 −2 Original line number Original line Diff line number Diff line Loading @@ -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( Loading @@ -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); }); }); } } Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +3 −4 Original line number Original line Diff line number Diff line Loading @@ -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, Loading Loading @@ -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) { Loading @@ -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() { Loading
quickstep/src/com/android/quickstep/OverviewComponentObserver.java +10 −5 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); } } Loading @@ -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(); Loading @@ -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<>()); Loading Loading @@ -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); Loading @@ -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; } } } } Loading
quickstep/src/com/android/quickstep/util/AsyncClockEventDelegate.java +2 −6 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -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); } } } }