rn代码与android,RN与原生通讯(安卓篇)

本文详细介绍了如何在React Native(RN)中与原生Android代码进行通信,包括RN调用安卓原生代码的步骤,如创建Java模块、暴露方法,以及使用RCTDeviceEventEmitter消息机制、Callback回调和Promise机制的实现方式。此外,还展示了如何通过Activity和Intent实现在RN与原生界面间的切换,以及RN与原生代码通过Promise和Callback的通信示例。
摘要由CSDN通过智能技术生成

明天和意外你永远都不知道哪一个先来,编程界亦是如此。例如某个已经有原生代码开发模块的项目要求用RN扩张某些功能;又例如,RN中未封装到的组件非得求助于原生代码。所以RN与原生代码通讯对于混合编程是至关重要的。为了实现两者之间的通信,facebook也提供了三种通信方式。

e413e84cd28b

看内容.jpg

RCTDeviceEventEmitter消息机制:由Native主导控制,可以任意时刻传递

Callback回调方式:由js代码调用,原生代码返回。

Promise机制方式:由js调用,只是每次使用都需要调用。

一、RN调用安卓代码(简单)

RN调用安卓原生的代码,大致分为如下几步。

1、用Android Studio打开一个已经创建好的RN项目,选择android/build.gradle文件。

e413e84cd28b

01.jpg

2、创建一个类继承ReactContextBaseJavaModule,在该类中我们应该要暴露出一些让RN调用的方法,封装成一个原生模块。

新建一个类MyReactPackage继承ReactContextBaseJavaModule

e413e84cd28b

02.jpg

public class MyNativeModule extends ReactContextBaseJavaModule{

}

实现getName方法。该方法用于返回RN代码需要寻找的类的名称。(alt+enter快捷键可快速实现父类方法)

@Override

public String getName() {

// 一定要有名字 RN代码要通过名字来调用该类的方法

return "ToastModule";

}

实现类的构造方法。在这里将传入的上下文赋值给类内部私有的上下文

// 创建一个上下文,放到构造函数中,得到reactContext

private ReactApplicationContext mContext;

public MyNativeModule(ReactApplicationContext reactContext){

super(reactContext);

mContext = reactContext;

}

创建暴露给RN调用的方法。但是要用注释符号@ReactMethod修饰。

//方法不能返回值 因为被调用的原生代码是异步的 原生代码执行结束之后只能通过回调函数或者发送消息给RN

@ReactMethod

public void rnCallNative(String msg){

//这个方法是说弹出一个弹窗到界面Toast.makeText(mContext,msg,Toast.LENGTH_LONG).s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值