React Native Android:允许多次调用回调函数

3
我希望了解如何在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());
        }
    }
}

但是回调只允许运行一次(参见React Native存储库中的代码)。我该如何保存JavaScript代码提供的回调引用,并定期调用它?

1个回答

2

使用RCTDeviceEventEmitter代替回调函数。

在JS中订阅:

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

从本地代码发送事件:

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

This 指的是一个 ReactContextBaseJavaModule 实例。 在 React 0.53 上运行正常。


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