React Native开发经验集React Native开发React Native编程

RN和Android 通信实操

2018-06-07  本文已影响35人  易之108

RN调用Android 方法

第一步

在android中创建类(ActuatorReactJavaModule,class名随意),继承ReactContextBaseJavaModule 实现继承方法。在类中实现一个方法(Native_AsyncTest,方法名随意),用@ReactMethod 修饰。此方法就是通过RN调用的方法。

第二步

在android中创建第二个类(ActuatorReactPackage,class 名随意),继承ReactPackage 实现继承方法。在createNativeModules 方法中进行如下修改

public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
        List<NativeModule> modules=new ArrayList<>();
        modules.add(new ActuatorReactJavaModule(reactContext));
        return modules;
    }

第三步

在MainApplication 类中的 getPackages 方法返回第二个类。

protected List<ReactPackage> getPackages() {
      return Arrays.<ReactPackage>asList(
          new MainReactPackage(),
            new ActuatorReactPackage()
      );
    }

第四步

在RN中使用如下调用

NativeModules.ActuatorReactJavaModule.Native_AsyncTest();

就可以调用android中的方法了。

android 调用 RN方法

第一步

在RN中的componentWillMount 方法中,使用DeviceEventEmitter 添加监听,代码如下。

componentWillMount(){
    DeviceEventEmitter.addListener('EventName_Async', this.onEvent_Async);
  }

onEvent_Async = (e) => {
    alert(JSON.stringify(e));
}

第二步

在android 中
触发监听,代码如下

public void Native_AsyncTest()
{
    // 发送事件
    WritableMap et= Arguments.createMap();
    et.putInt("key1", 11);
    et.putInt("key2", 22);
    sendEvent(myContext,"EventName_Async",et);
}

就可以完成调用。

上一篇下一篇

猜你喜欢

热点阅读