上工作正常
我想知道如何允许在React Andato 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 Repo中的代码)。如何保存对我的JavaScript代码提供的回调的引用,并继续定期调用?
使用rctdeviceeventemitter而不是回调。
在JS中订阅:
DeviceEventEmitter.addListener('onError',(error) => console.log(error))
从本机代码发送事件:
this.getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(name,data);
This
是指ReactContextBaseJavaModule
实例。在React 0.53