React native + Android Activity onPause/onResume

Sim*_*cha 5 android android-activity react-native

我有一个下一个发射器的js代码:

DeviceEventEmitter.addListener('keyboardWillShow1', function(e: Event) {
  console.log(e);
});
Run Code Online (Sandbox Code Playgroud)

我如何从Activity onPause/中发出此事件onResume

kzz*_*zzf 5

您可以使用RCTDeviceEventEmitter.emit此处定义的方法从java发送事件:DeviceEventManagerModule.java#L27

要做到这一点,首先需要参考ReactApplicationContext,然后调用:

reactAppContext
  .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
  .emit("keyboardWillShow1", null);
Run Code Online (Sandbox Code Playgroud)

您可以发送任意数据,然后将其附加到您在JS端收到的事件,而不是"null".

请参阅此DeviceEventManagerModule.java#L49作为示例 - 这是将后退按钮事件发送给JS的方式.

然后,您可以使用类似的模式从活动中调度事件onPause/ onResume假设您已参考ReactApplicationContext

另一种方法是创建自定义模块,该模块可以注册接收生命周期事件.在"Timing"模块中查看它是如何完成的:

  1. "Timing"模块实现了LifecycleEventListener.java接口
  2. 当模块初始化时,它通过该接口Timing.java#L126注册自己以接收生命周期
  3. 您可以实现该接口的方法onHostPauseonHostResume方法,并使用上面的代码段从那里调度事件