diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/AndroidChoreographerProvider.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/AndroidChoreographerProvider.java deleted file mode 100644 index 745be44af60..00000000000 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/AndroidChoreographerProvider.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -package com.facebook.react.internal; - -import com.facebook.infer.annotation.Nullsafe; -import com.facebook.react.bridge.UiThreadUtil; - -/** An implementation of ChoreographerProvider that directly uses android.view.Choreographer. */ -@Nullsafe(Nullsafe.Mode.LOCAL) -public final class AndroidChoreographerProvider implements ChoreographerProvider { - - public static final class AndroidChoreographer implements ChoreographerProvider.Choreographer { - private final android.view.Choreographer sInstance = android.view.Choreographer.getInstance(); - - public void postFrameCallback(android.view.Choreographer.FrameCallback callback) { - sInstance.postFrameCallback(callback); - } - - public void removeFrameCallback(android.view.Choreographer.FrameCallback callback) { - sInstance.removeFrameCallback(callback); - } - } - - private static class Holder { - private static final AndroidChoreographerProvider INSTANCE = new AndroidChoreographerProvider(); - } - - public static AndroidChoreographerProvider getInstance() { - return Holder.INSTANCE; - } - - public Choreographer getChoreographer() { - UiThreadUtil.assertOnUiThread(); - return new AndroidChoreographer(); - } -} diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/AndroidChoreographerProvider.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/AndroidChoreographerProvider.kt new file mode 100644 index 00000000000..39938f8396c --- /dev/null +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/AndroidChoreographerProvider.kt @@ -0,0 +1,33 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +package com.facebook.react.internal + +import com.facebook.react.bridge.UiThreadUtil + +/** An implementation of ChoreographerProvider that directly uses android.view.Choreographer. */ +public object AndroidChoreographerProvider : ChoreographerProvider { + + private class AndroidChoreographer : ChoreographerProvider.Choreographer { + private val instance: android.view.Choreographer = android.view.Choreographer.getInstance() + + override public fun postFrameCallback(callback: android.view.Choreographer.FrameCallback) { + instance.postFrameCallback(callback) + } + + override public fun removeFrameCallback(callback: android.view.Choreographer.FrameCallback) { + instance.removeFrameCallback(callback) + } + } + + @JvmStatic public fun getInstance(): AndroidChoreographerProvider = this + + override public fun getChoreographer(): ChoreographerProvider.Choreographer { + UiThreadUtil.assertOnUiThread() + return AndroidChoreographer() + } +}