【问题标题】:React Native Android: allow to invoke callback multiple timesReact Native Android:允许多次调用回调
【发布时间】:2017-02-22 01:36:58
【问题描述】:

我想知道如何允许在 React Native Android 应用中多次调用回调。

我的 Android 原生模块使用 com.facebook.react.bridge.Callback 保存回调并定期使用 AlarmManager.setRepeating 调用它。

代码有点像这样。

public class BackgroundAlarmReceiver extends BroadcastReceiver {
    private static Callback callback;

    private void executeCallback() {
        Log.d("BackgroundAlarmReceiver", "Performing background work...");
        try {
            callback.invoke();
        } catch (IllegalViewOperationException e) {
            Log.d("BackgroundAlarmReceiver", e.getMessage());
        }
    }
}

但回调只允许运行一次(参见the code from React Native repo)。如何保存对我的 JavaScript 代码提供的回调的引用,并定期调用它?

【问题讨论】:

    标签: java android react-native


    【解决方案1】:

    使用 RCTDeviceEventEmitter 而不是回调。

    在 JS 中订阅:

    DeviceEventEmitter.addListener('onError',(error) => console.log(error))
    

    从本机代码发送事件:

    this.getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(name,data);
    

    This 指的是ReactContextBaseJavaModule 实例。 在反应 0.53 上工作正常

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-25
      • 1970-01-01
      • 2018-12-30
      • 2021-01-18
      • 1970-01-01
      • 2021-09-26
      • 1970-01-01
      • 2020-10-12
      相关资源
      最近更新 更多