React native + Android Activity onPause/onResume

5

我有一段带有next事件的JavaScript代码:

DeviceEventEmitter.addListener('keyboardWillShow1', function(e: Event) {
  console.log(e);
});

我应该如何在Activity的onPause/onResume方法中发送此事件?
2个回答

5
你可以使用在这里定义的 RCTDeviceEventEmitter.emit 方法从Java发送事件:DeviceEventManagerModule.java#L27 要实现这一点,首先需要引用 ReactApplicationContext,然后调用:
reactAppContext
  .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
  .emit("keyboardWillShow1", null);

你可以发送任意数据而不是"null",然后该数据将附加到JS侧收到的事件上。

以这个DeviceEventManagerModule.java#L49为例 - 这是如何将后退按钮事件发送到JS的。

假设你有对ReactApplicationContext的引用,你可以使用类似的模式从活动 onPause / onResume 中分派事件。

另一种方法是创建自定义模块,该模块可以注册接收生命周期事件。请参阅 "Timing" 模块的实现:

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

谢谢!我一直在寻找如何实现onPause和onResume的方法! - Shawn Khameneh

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接