From 2075e39c76724481fb7fcd016a68c6285c847184 Mon Sep 17 00:00:00 2001 From: Fengjiang Li Date: Tue, 8 Oct 2024 10:19:01 -0700 Subject: [PATCH] [Dagger] Make AsyncClockEventDelegate provided by DaggerSingletonObject Test: presubmit Bug: 361850561 Flag: NONE - dagger Change-Id: I53791218e0ff1e5d61cefee3f32a4c49882777cc --- .../dagger/QuickstepBaseAppComponent.java | 3 +++ .../util/AsyncClockEventDelegate.java | 18 +++++++++++++++--- .../android/launcher3/util/SettingsCache.java | 2 +- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/quickstep/src/com/android/quickstep/dagger/QuickstepBaseAppComponent.java b/quickstep/src/com/android/quickstep/dagger/QuickstepBaseAppComponent.java index eef1f96c21..341c86892a 100644 --- a/quickstep/src/com/android/quickstep/dagger/QuickstepBaseAppComponent.java +++ b/quickstep/src/com/android/quickstep/dagger/QuickstepBaseAppComponent.java @@ -20,6 +20,7 @@ import com.android.launcher3.dagger.LauncherAppComponent; import com.android.launcher3.dagger.LauncherBaseAppComponent; import com.android.launcher3.model.WellbeingModel; import com.android.quickstep.logging.SettingsChangeLogger; +import com.android.quickstep.util.AsyncClockEventDelegate; /** * Launcher Quickstep base component for Dagger injection. @@ -33,4 +34,6 @@ public interface QuickstepBaseAppComponent extends LauncherBaseAppComponent { SettingsChangeLogger getSettingsChangeLogger(); WellbeingModel getWellbeingModel(); + + AsyncClockEventDelegate getAsyncClockEventDelegate(); } diff --git a/quickstep/src/com/android/quickstep/util/AsyncClockEventDelegate.java b/quickstep/src/com/android/quickstep/util/AsyncClockEventDelegate.java index 38ae3039d8..4a84b1b630 100644 --- a/quickstep/src/com/android/quickstep/util/AsyncClockEventDelegate.java +++ b/quickstep/src/com/android/quickstep/util/AsyncClockEventDelegate.java @@ -32,23 +32,33 @@ import android.widget.TextClock.ClockEventDelegate; import androidx.annotation.WorkerThread; +import com.android.launcher3.dagger.ApplicationContext; +import com.android.launcher3.dagger.LauncherAppSingleton; +import com.android.launcher3.dagger.LauncherBaseAppComponent; +import com.android.launcher3.util.DaggerSingletonObject; +import com.android.launcher3.util.DaggerSingletonTracker; +import com.android.launcher3.util.ExecutorUtil; import com.android.launcher3.util.MainThreadInitializedObject; import com.android.launcher3.util.SafeCloseable; import com.android.launcher3.util.SettingsCache; import com.android.launcher3.util.SettingsCache.OnChangeListener; import com.android.launcher3.util.SimpleBroadcastReceiver; +import com.android.quickstep.dagger.QuickstepBaseAppComponent; import java.util.ArrayList; import java.util.List; +import javax.inject.Inject; + /** * Extension of {@link ClockEventDelegate} to support async event registration */ +@LauncherAppSingleton public class AsyncClockEventDelegate extends ClockEventDelegate implements OnChangeListener, SafeCloseable { - public static final MainThreadInitializedObject INSTANCE = - new MainThreadInitializedObject<>(AsyncClockEventDelegate::new); + public static final DaggerSingletonObject INSTANCE = + new DaggerSingletonObject<>(QuickstepBaseAppComponent::getAsyncClockEventDelegate); private final Context mContext; private final SimpleBroadcastReceiver mReceiver = @@ -61,10 +71,12 @@ public class AsyncClockEventDelegate extends ClockEventDelegate private boolean mFormatRegistered = false; private boolean mDestroyed = false; - private AsyncClockEventDelegate(Context context) { + @Inject + AsyncClockEventDelegate(@ApplicationContext Context context, DaggerSingletonTracker tracker) { super(context); mContext = context; mReceiver.register(mContext, ACTION_TIME_CHANGED, ACTION_TIMEZONE_CHANGED); + ExecutorUtil.executeSyncOnMainOrFail(() -> tracker.addCloseable(this)); } @Override diff --git a/src/com/android/launcher3/util/SettingsCache.java b/src/com/android/launcher3/util/SettingsCache.java index a52f75bb43..a1ed49990b 100644 --- a/src/com/android/launcher3/util/SettingsCache.java +++ b/src/com/android/launcher3/util/SettingsCache.java @@ -91,7 +91,7 @@ public class SettingsCache extends ContentObserver implements SafeCloseable { new DaggerSingletonObject<>(LauncherBaseAppComponent::getSettingsCache); @Inject - SettingsCache(@ApplicationContext final Context context, DaggerSingletonTracker tracker) { + SettingsCache(@ApplicationContext Context context, DaggerSingletonTracker tracker) { super(new Handler(Looper.getMainLooper())); mResolver = context.getContentResolver(); ExecutorUtil.executeSyncOnMainOrFail(() -> tracker.addCloseable(this));