mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-05-20 16:04:32 +08:00
Dispatch module setup asynchronously to avoid blocking main thread when bridge starts
Summary:Initializing native modules can block the main thread for tens of milliseconds when it starts up, making it difficult to instantiate the bridge on demand without causing a performance blip. This diff splits up the initialization of modules so that - although they still happen on the main thread - they don't block the thread continuously. Reviewed By: javache Differential Revision: D2965438 fb-gh-sync-id: 38c9c9d281e4672b5874d68b57d4c60d1d268344 shipit-source-id: 38c9c9d281e4672b5874d68b57d4c60d1d268344
This commit is contained in:
committed by
Facebook Github Bot 6
parent
8f3e5b1e93
commit
dc13115445
@@ -202,10 +202,11 @@ RCT_EXPORT_MODULE()
|
||||
|
||||
- (void)testInjectedModulesInitializedDuringBridgeInit
|
||||
{
|
||||
XCTAssertTrue(_injectedModuleInitNotificationSent);
|
||||
XCTAssertEqual(_injectedModule, [_bridge moduleForClass:[RCTTestInjectedModule class]]);
|
||||
XCTAssertEqual(_injectedModule.bridge, _bridge.batchedBridge);
|
||||
XCTAssertNotNil(_injectedModule.methodQueue);
|
||||
RUN_RUNLOOP_WHILE(!_injectedModuleInitNotificationSent);
|
||||
XCTAssertTrue(_injectedModuleInitNotificationSent);
|
||||
}
|
||||
|
||||
- (void)testCustomInitModuleInitializedAtBridgeStartup
|
||||
@@ -214,6 +215,8 @@ RCT_EXPORT_MODULE()
|
||||
XCTAssertTrue(_customInitModuleNotificationSent);
|
||||
RCTTestCustomInitModule *module = [_bridge moduleForClass:[RCTTestCustomInitModule class]];
|
||||
XCTAssertTrue(module.initializedOnMainThread);
|
||||
XCTAssertEqual(module.bridge, _bridge.batchedBridge);
|
||||
XCTAssertNotNil(module.methodQueue);
|
||||
}
|
||||
|
||||
- (void)testCustomSetBridgeModuleInitializedAtBridgeStartup
|
||||
@@ -222,6 +225,8 @@ RCT_EXPORT_MODULE()
|
||||
XCTAssertTrue(_customSetBridgeModuleNotificationSent);
|
||||
RCTTestCustomSetBridgeModule *module = [_bridge moduleForClass:[RCTTestCustomSetBridgeModule class]];
|
||||
XCTAssertTrue(module.setBridgeOnMainThread);
|
||||
XCTAssertEqual(module.bridge, _bridge.batchedBridge);
|
||||
XCTAssertNotNil(module.methodQueue);
|
||||
}
|
||||
|
||||
- (void)testExportConstantsModuleInitializedAtBridgeStartup
|
||||
@@ -232,6 +237,8 @@ RCT_EXPORT_MODULE()
|
||||
RUN_RUNLOOP_WHILE(!module.exportedConstants);
|
||||
XCTAssertTrue(module.exportedConstants);
|
||||
XCTAssertTrue(module.exportedConstantsOnMainThread);
|
||||
XCTAssertEqual(module.bridge, _bridge.batchedBridge);
|
||||
XCTAssertNotNil(module.methodQueue);
|
||||
}
|
||||
|
||||
- (void)testLazyInitModuleNotInitializedDuringBridgeInit
|
||||
|
||||
Reference in New Issue
Block a user