2015-11-17 15 views

risposta

5

È 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
  1. "Timing" implementa LifecycleEventListener.java interfaccia
  2. Quando il modulo viene inizializzato lo si registra per ricevere il ciclo di vita attraverso l'interfaccia Timing.java#L126
  3. È possibile implementare onHostPause e onHostResume metodi di tale interfaccia e utilizzare lo snippet da sopra per inviare eventi da lì
+0

Grazie! Ho cercato dappertutto come implementare onPause e onResume! –

Problemi correlati