mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Added saftey for ensuring callback is called
Summary: Adds a return value to `MessageQueueThread#runOnQueue`, it's implementors and one caller. It is currently possible for a callback to not be called (because the HandlerThread has been shutdown). If the callback is mission-critical (frees resources, releases a lock, etc) the callee has no indication that it needs to do something. This surfaces that information to the callee. Changelog: [Android][Changed] - Made `MessageQueueThread#runOnQueue` return a boolean. Made `MessageQueueThreadImpl#runOnQueue` return false when the runnable is not submitted. Reviewed By: RSNara Differential Revision: D33075516 fbshipit-source-id: bd214a39ae066c0e7d413f2eaaaa05bd072ead2a
This commit is contained in:
committed by
Facebook GitHub Bot
parent
19174a5ec5
commit
89faf0c9a8
@@ -396,8 +396,8 @@ public class ReactContext extends ContextWrapper {
|
||||
return Assertions.assertNotNull(mJSMessageQueueThread).isOnThread();
|
||||
}
|
||||
|
||||
public void runOnJSQueueThread(Runnable runnable) {
|
||||
Assertions.assertNotNull(mJSMessageQueueThread).runOnQueue(runnable);
|
||||
public boolean runOnJSQueueThread(Runnable runnable) {
|
||||
return Assertions.assertNotNull(mJSMessageQueueThread).runOnQueue(runnable);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -19,7 +19,7 @@ public interface MessageQueueThread {
|
||||
* if it is being submitted from the same queue Thread.
|
||||
*/
|
||||
@DoNotStrip
|
||||
void runOnQueue(Runnable runnable);
|
||||
boolean runOnQueue(Runnable runnable);
|
||||
|
||||
/**
|
||||
* Runs the given Callable on this Thread. It will be submitted to the end of the event queue even
|
||||
|
||||
+3
-1
@@ -55,15 +55,17 @@ public class MessageQueueThreadImpl implements MessageQueueThread {
|
||||
*/
|
||||
@DoNotStrip
|
||||
@Override
|
||||
public void runOnQueue(Runnable runnable) {
|
||||
public boolean runOnQueue(Runnable runnable) {
|
||||
if (mIsFinished) {
|
||||
FLog.w(
|
||||
ReactConstants.TAG,
|
||||
"Tried to enqueue runnable on already finished thread: '"
|
||||
+ getName()
|
||||
+ "... dropping Runnable.");
|
||||
return false;
|
||||
}
|
||||
mHandler.post(runnable);
|
||||
return true;
|
||||
}
|
||||
|
||||
@DoNotStrip
|
||||
|
||||
Reference in New Issue
Block a user