diff --git a/src/com/android/launcher3/dagger/LauncherBaseAppComponent.java b/src/com/android/launcher3/dagger/LauncherBaseAppComponent.java index 4da7c2716a..453778537f 100644 --- a/src/com/android/launcher3/dagger/LauncherBaseAppComponent.java +++ b/src/com/android/launcher3/dagger/LauncherBaseAppComponent.java @@ -23,6 +23,7 @@ import com.android.launcher3.util.DaggerSingletonTracker; import com.android.launcher3.util.PluginManagerWrapper; import com.android.launcher3.util.ScreenOnTracker; import com.android.launcher3.util.SettingsCache; +import com.android.launcher3.util.window.RefreshRateTracker; import com.android.launcher3.widget.custom.CustomWidgetManager; import dagger.BindsInstance; @@ -37,6 +38,7 @@ import dagger.BindsInstance; */ public interface LauncherBaseAppComponent { DaggerSingletonTracker getDaggerSingletonTracker(); + RefreshRateTracker getRefreshRateTracker(); InstallSessionHelper getInstallSessionHelper(); ScreenOnTracker getScreenOnTracker(); SettingsCache getSettingsCache(); diff --git a/src/com/android/launcher3/util/window/RefreshRateTracker.java b/src/com/android/launcher3/util/window/RefreshRateTracker.java index 7814617b9e..e3397d4359 100644 --- a/src/com/android/launcher3/util/window/RefreshRateTracker.java +++ b/src/com/android/launcher3/util/window/RefreshRateTracker.java @@ -26,25 +26,34 @@ import android.view.Display; import androidx.annotation.WorkerThread; -import com.android.launcher3.util.MainThreadInitializedObject; +import com.android.launcher3.dagger.ApplicationContext; +import com.android.launcher3.dagger.LauncherAppComponent; +import com.android.launcher3.dagger.LauncherAppSingleton; +import com.android.launcher3.util.DaggerSingletonObject; +import com.android.launcher3.util.DaggerSingletonTracker; import com.android.launcher3.util.SafeCloseable; +import javax.inject.Inject; + /** * Utility class to track refresh rate of the current device */ +@LauncherAppSingleton public class RefreshRateTracker implements DisplayListener, SafeCloseable { - private static final MainThreadInitializedObject INSTANCE = - new MainThreadInitializedObject<>(RefreshRateTracker::new); + private static final DaggerSingletonObject INSTANCE = + new DaggerSingletonObject<>(LauncherAppComponent::getRefreshRateTracker); private int mSingleFrameMs = 1; private final DisplayManager mDM; - private RefreshRateTracker(Context context) { + @Inject + RefreshRateTracker(@ApplicationContext Context context, DaggerSingletonTracker tracker) { mDM = context.getSystemService(DisplayManager.class); updateSingleFrameMs(); mDM.registerDisplayListener(this, UI_HELPER_EXECUTOR.getHandler()); + tracker.addCloseable(this); } /**