public interface NativeModule
NativeModule
s whose
implementation is written in Java should extend BaseJavaModule
or ReactContextBaseJavaModule
. NativeModule
s whose implementation is written in C++
must not provide any Java code (so they can be reused on other platforms), and instead should
register themselves using CxxModuleWrapper
.Modifier and Type | Interface and Description |
---|---|
static interface |
NativeModule.NativeMethod |
static interface |
NativeModule.SyncNativeHook
A method that can be called from JS synchronously on the JS thread and return a result.
|
Modifier and Type | Method and Description |
---|---|
boolean |
canOverrideExistingModule()
Return true if you intend to override some other native module that was registered e.g.
|
java.util.Map<java.lang.String,NativeModule.NativeMethod> |
getMethods() |
java.lang.String |
getName() |
void |
initialize()
This is called at the end of
CatalystApplicationFragment#createCatalystInstance()
after the CatalystInstance has been created, in order to initialize NativeModules that require
the CatalystInstance or JS modules. |
void |
onCatalystInstanceDestroy()
Called before {CatalystInstance#onHostDestroy}
|
void |
onReactBridgeInitialized(ReactBridge bridge)
Called on the JS thread after a ReactBridge has been created.
|
boolean |
supportsWebWorkers()
In order to support web workers, a module must be aware that it can be invoked from multiple
different JS VMs.
|
void |
writeConstantsField(JsonWriter writer,
java.lang.String fieldName)
Append a field which represents the constants this module exports
to JS.
|
java.lang.String getName()
require()
this module
from javascript.java.util.Map<java.lang.String,NativeModule.NativeMethod> getMethods()
void writeConstantsField(JsonWriter writer, java.lang.String fieldName) throws java.io.IOException
java.io.IOException
void initialize()
CatalystApplicationFragment#createCatalystInstance()
after the CatalystInstance has been created, in order to initialize NativeModules that require
the CatalystInstance or JS modules.boolean canOverrideExistingModule()
void onReactBridgeInitialized(ReactBridge bridge)
bridge
- the ReactBridge instance that has just been createdvoid onCatalystInstanceDestroy()
boolean supportsWebWorkers()
ExecutorToken
as the first parameter before any arguments
from JS. This ExecutorToken internally maps to a specific JS VM and can be used by the
framework to route calls appropriately. In order to make JS module calls correctly, start using
the version of ReactContext.getJSModule(ExecutorToken, Class)
that takes an
ExecutorToken. It will ensure that any calls you dispatch to the returned object will go to
the right VM. For Callbacks, you don't have to do anything special -- the framework
automatically tags them with the correct ExecutorToken when the are created.
Note: even though calls can come from multiple JS VMs on multiple threads, calls to this module
will still only occur on a single thread.