2017-02-22 40 views
1

我想知道如何在React Native Android应用程序中多次调用回调。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代码提供的回调的引用,并定期调用它?

回答

0

使用RCTDeviceEventEmitter代替回调。

订阅在JS:

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

从本地代码发送事件:

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

This指​​实例。 在反应中正常工作0.53