È possibile inviare eventi da Java utilizzando RCTDeviceEventEmitter.emit
metodo definito qui: DeviceEventManagerModule.java#L27
Per farlo è necessario prima di avere riferimento a ReactApplicationContext
, quindi chiamare:
reactAppContext
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
.emit("keyboardWillShow1", null);
Invece di "null" è possibile invia dati arbitrari che verranno poi allegati all'evento che ricevi sul lato JS.
Vedere questo DeviceEventManagerModule.java#L49 come esempio: questo è il modo in cui gli eventi del pulsante Indietro vengono inviati a JS.
è quindi possibile utilizzare modello simile di inviare gli eventi da attività /onResume
supponendo di avere riferimento a ReactApplicationContext
Un altro modo sarebbe quello di creare il modulo personalizzato, che può registrarsi per ricevere gli eventi del ciclo di vita. Vedere come si fa nel modulo "Timing":
modulo
- "Timing" implementa LifecycleEventListener.java interfaccia
- Quando il modulo viene inizializzato lo si registra per ricevere il ciclo di vita attraverso l'interfaccia Timing.java#L126
- È possibile implementare
onHostPause
e onHostResume
metodi di tale interfaccia e utilizzare lo snippet da sopra per inviare eventi da lì
Grazie! Ho cercato dappertutto come implementare onPause e onResume! –