Add GuardedRunnable to run blocks of code on the UI thread with automatic redboxing
Summary: Like GuardedAsyncTask, et al, but for Runnables. Reviewed By: achen1 Differential Revision: D4537287 fbshipit-source-id: 8ae60c7007843c0b7d8e5c3835d0847921fb3db5
This commit is contained in:
parent
a6e4977662
commit
08db896321
|
@ -0,0 +1,28 @@
|
|||
// Copyright 2004-present Facebook. All Rights Reserved.
|
||||
|
||||
package com.facebook.react.bridge;
|
||||
|
||||
/**
|
||||
* Abstract base for a Runnable that should have any RuntimeExceptions it throws
|
||||
* handled by the {@link com.facebook.react.bridge.NativeModuleCallExceptionHandler} registered if
|
||||
* the app is in dev mode.
|
||||
*/
|
||||
public abstract class GuardedRunnable implements Runnable {
|
||||
|
||||
private final ReactContext mReactContext;
|
||||
|
||||
public GuardedRunnable(ReactContext reactContext) {
|
||||
mReactContext = reactContext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void run() {
|
||||
try {
|
||||
runGuarded();
|
||||
} catch (RuntimeException e) {
|
||||
mReactContext.handleException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public abstract void runGuarded();
|
||||
}
|
|
@ -20,6 +20,7 @@ import java.util.concurrent.TimeUnit;
|
|||
import com.facebook.react.animation.Animation;
|
||||
import com.facebook.react.animation.AnimationRegistry;
|
||||
import com.facebook.react.bridge.Callback;
|
||||
import com.facebook.react.bridge.GuardedRunnable;
|
||||
import com.facebook.react.bridge.ReactApplicationContext;
|
||||
import com.facebook.react.bridge.SoftAssertions;
|
||||
import com.facebook.react.bridge.ReactContext;
|
||||
|
@ -803,9 +804,9 @@ public class UIViewOperationQueue {
|
|||
// sure any late-arriving UI commands are executed.
|
||||
if (!mIsDispatchUIFrameCallbackEnqueued) {
|
||||
UiThreadUtil.runOnUiThread(
|
||||
new Runnable() {
|
||||
new GuardedRunnable(mReactApplicationContext) {
|
||||
@Override
|
||||
public void run() {
|
||||
public void runGuarded() {
|
||||
flushPendingBatches();
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue