make mReactChoreographer final in Timing.java

Reviewed By: achen1

Differential Revision: D4883119

fbshipit-source-id: 1adb57f333742fca9c5e1ece6355ee18881c48a4
This commit is contained in:
Aaron Chiu 2017-04-17 13:23:56 -07:00 committed by Facebook Github Bot
parent 92f900c79d
commit 9c44630866

View File

@ -23,7 +23,6 @@ import java.util.concurrent.atomic.AtomicBoolean;
import android.util.SparseArray; import android.util.SparseArray;
import com.facebook.infer.annotation.Assertions;
import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.ExecutorToken; import com.facebook.react.bridge.ExecutorToken;
import com.facebook.react.bridge.LifecycleEventListener; import com.facebook.react.bridge.LifecycleEventListener;
@ -125,8 +124,7 @@ public final class Timing extends ReactContextBaseJavaModule implements Lifecycl
} }
mTimersToCall.clear(); mTimersToCall.clear();
Assertions.assertNotNull(mReactChoreographer) mReactChoreographer.postFrameCallback(ReactChoreographer.CallbackType.TIMERS_EVENTS, this);
.postFrameCallback(ReactChoreographer.CallbackType.TIMERS_EVENTS, this);
} }
} }
@ -146,9 +144,7 @@ public final class Timing extends ReactContextBaseJavaModule implements Lifecycl
mCurrentIdleCallbackRunnable = new IdleCallbackRunnable(frameTimeNanos); mCurrentIdleCallbackRunnable = new IdleCallbackRunnable(frameTimeNanos);
getReactApplicationContext().runOnJSQueueThread(mCurrentIdleCallbackRunnable); getReactApplicationContext().runOnJSQueueThread(mCurrentIdleCallbackRunnable);
Assertions.assertNotNull(mReactChoreographer).postFrameCallback( mReactChoreographer.postFrameCallback(ReactChoreographer.CallbackType.IDLE_EVENT, this);
ReactChoreographer.CallbackType.IDLE_EVENT,
this);
} }
} }
@ -202,8 +198,8 @@ public final class Timing extends ReactContextBaseJavaModule implements Lifecycl
private final AtomicBoolean isRunningTasks = new AtomicBoolean(false); private final AtomicBoolean isRunningTasks = new AtomicBoolean(false);
private final TimerFrameCallback mTimerFrameCallback = new TimerFrameCallback(); private final TimerFrameCallback mTimerFrameCallback = new TimerFrameCallback();
private final IdleFrameCallback mIdleFrameCallback = new IdleFrameCallback(); private final IdleFrameCallback mIdleFrameCallback = new IdleFrameCallback();
private final ReactChoreographer mReactChoreographer;
private @Nullable IdleCallbackRunnable mCurrentIdleCallbackRunnable; private @Nullable IdleCallbackRunnable mCurrentIdleCallbackRunnable;
private @Nullable ReactChoreographer mReactChoreographer;
private boolean mFrameCallbackPosted = false; private boolean mFrameCallbackPosted = false;
private boolean mFrameIdleCallbackPosted = false; private boolean mFrameIdleCallbackPosted = false;
private final Set<ExecutorToken> mSendIdleEventsExecutorTokens; private final Set<ExecutorToken> mSendIdleEventsExecutorTokens;
@ -232,6 +228,7 @@ public final class Timing extends ReactContextBaseJavaModule implements Lifecycl
mTimerIdsToTimers = new HashMap<>(); mTimerIdsToTimers = new HashMap<>();
mSendIdleEventsExecutorTokens = new HashSet<>(); mSendIdleEventsExecutorTokens = new HashSet<>();
mIdleCallbackContextsToCall = new ArrayList<>(); mIdleCallbackContextsToCall = new ArrayList<>();
mReactChoreographer = ReactChoreographer.getInstance();
} }
@Override @Override
@ -257,11 +254,6 @@ public final class Timing extends ReactContextBaseJavaModule implements Lifecycl
@Override @Override
public void onHostResume() { public void onHostResume() {
if (mReactChoreographer == null) {
// Safe to acquire choreographer here, as onHostResume() is invoked from UI thread.
mReactChoreographer = ReactChoreographer.getInstance();
}
isPaused.set(false); isPaused.set(false);
// TODO(5195192) Investigate possible problems related to restarting all tasks at the same // TODO(5195192) Investigate possible problems related to restarting all tasks at the same
// moment // moment
@ -271,11 +263,6 @@ public final class Timing extends ReactContextBaseJavaModule implements Lifecycl
@Override @Override
public void onHeadlessJsTaskStart(int taskId) { public void onHeadlessJsTaskStart(int taskId) {
if (mReactChoreographer == null) {
// Safe to acquire choreographer here, as onHeadlessJsTaskStart() is invoked from UI thread.
mReactChoreographer = ReactChoreographer.getInstance();
}
if (!isRunningTasks.getAndSet(true)) { if (!isRunningTasks.getAndSet(true)) {
setChoreographerCallback(); setChoreographerCallback();
maybeSetChoreographerIdleCallback(); maybeSetChoreographerIdleCallback();
@ -318,7 +305,7 @@ public final class Timing extends ReactContextBaseJavaModule implements Lifecycl
private void setChoreographerCallback() { private void setChoreographerCallback() {
if (!mFrameCallbackPosted) { if (!mFrameCallbackPosted) {
Assertions.assertNotNull(mReactChoreographer).postFrameCallback( mReactChoreographer.postFrameCallback(
ReactChoreographer.CallbackType.TIMERS_EVENTS, ReactChoreographer.CallbackType.TIMERS_EVENTS,
mTimerFrameCallback); mTimerFrameCallback);
mFrameCallbackPosted = true; mFrameCallbackPosted = true;
@ -330,7 +317,7 @@ public final class Timing extends ReactContextBaseJavaModule implements Lifecycl
HeadlessJsTaskContext.getInstance(getReactApplicationContext()); HeadlessJsTaskContext.getInstance(getReactApplicationContext());
if (mFrameCallbackPosted && isPaused.get() && if (mFrameCallbackPosted && isPaused.get() &&
!headlessJsTaskContext.hasActiveTasks()) { !headlessJsTaskContext.hasActiveTasks()) {
Assertions.assertNotNull(mReactChoreographer).removeFrameCallback( mReactChoreographer.removeFrameCallback(
ReactChoreographer.CallbackType.TIMERS_EVENTS, ReactChoreographer.CallbackType.TIMERS_EVENTS,
mTimerFrameCallback); mTimerFrameCallback);
mFrameCallbackPosted = false; mFrameCallbackPosted = false;
@ -339,7 +326,7 @@ public final class Timing extends ReactContextBaseJavaModule implements Lifecycl
private void setChoreographerIdleCallback() { private void setChoreographerIdleCallback() {
if (!mFrameIdleCallbackPosted) { if (!mFrameIdleCallbackPosted) {
Assertions.assertNotNull(mReactChoreographer).postFrameCallback( mReactChoreographer.postFrameCallback(
ReactChoreographer.CallbackType.IDLE_EVENT, ReactChoreographer.CallbackType.IDLE_EVENT,
mIdleFrameCallback); mIdleFrameCallback);
mFrameIdleCallbackPosted = true; mFrameIdleCallbackPosted = true;
@ -348,7 +335,7 @@ public final class Timing extends ReactContextBaseJavaModule implements Lifecycl
private void clearChoreographerIdleCallback() { private void clearChoreographerIdleCallback() {
if (mFrameIdleCallbackPosted) { if (mFrameIdleCallbackPosted) {
Assertions.assertNotNull(mReactChoreographer).removeFrameCallback( mReactChoreographer.removeFrameCallback(
ReactChoreographer.CallbackType.IDLE_EVENT, ReactChoreographer.CallbackType.IDLE_EVENT,
mIdleFrameCallback); mIdleFrameCallback);
mFrameIdleCallbackPosted = false; mFrameIdleCallbackPosted = false;