React native + Android Activity onPause / onResume

时间:2015-11-17 13:39:26

标签: android android-activity react-native

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

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

我如何从活动onPause / onResume发出此事件?

2 个答案:

答案 0 :(得分:5)

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

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

reactAppContext
  .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
  .emit("keyboardWillShow1", null);

您可以发送任意数据,而不是“null”,然后将这些数据附加到您在JS端收到的事件。

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

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

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

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

答案 1 :(得分:1)

我相信现在react-native-activity-android模块可以实现这一目标。