android studio一个页面等待3秒跳转_React native与Android互相调用各自方法(+传参)...

00e26e16a67cd4f417a88e80cb53c681.png

前言:作为前端首次接触Android还真有点懵逼(再次感谢我的同事-java开发工程),一步一个脚印,Android也算是入了门,做RN基本上够用了。

建议:想做RN开发的同学简单学习下Android,Android中的代码风格,项目结构等等也都可以用到前端项目中(菜鸟见解)。

网上有很多这样的文章,我简单总结下(我用的Android Studio)。

一、RN调用Android方法

解释:这是一个RN调用Android方法跳转Android页面的例子,你可将startActivity方法中内容删除换成你需要逻辑。

1、首先在Android项目中创建一个class类(类名随意),姑且叫MainMethods,集成ReactContextBaseJavaModule类,然后吗?Android Studio很强大,Alt+Enter自动构建方法。(上图)

f4e16fbbf8bf39e9b10c6157a579ba52.png
startActivity方法使用@ReactMethod暴露给RN

startActivity方法就是给RN中调用的,里面内容逻辑跟随自己业务来。

Android方法有了,下一步就注册方法。

2,又在创建一个class类(类名随意),姑且叫MainRNPackage,集成ReactPackage类,然后吗?Android Studio很强大,Alt+Enter自动构建方法。(上图)

e0acb358356d26753a4bc4df16dddfb1.png

将MainMethods类注册到RN中。

3、然后打开MainApplication类(没有的话自己创建一个),将上一步的MainRNPackage类注册到MainApplication中。(上图)

088096f0b853763b3a3fb6aae9939c3e.png

到这步Android中的发送就已经创建好了,也都暴露到RN原型上了,下一步RN调用Android方法。

4、现在Android中的方法都创建好了,我们怎么在RN中调用了。(上图)

8252a1b1c4a13be52bed72006aa5f154.png

使用RN中的NativeModules放中调用android中startActivity方法

使用NativeModules调用Android MainMethods类下startActivity方法

NativeModules.MainMethods.startActivity('xtt.android.doctor.LiveVideoActivity', data)

有同学会问你这是传的是什么东西,其实我这是一个RN跳转Android页面的封装方法,传递Android需要的class类名和参数跳转页面。

二、Android调用RN方法

1,新建一个class类(类名随意),姑且叫:EventEmitter类,定义一个static(静态)的变量mReactContext和方法sendEvent。(上图)

ecd70307a4d436cee9cd9203ab84f9d5.png

这里定义好sendEvent方法,他接受两个参数:

第一个参数:方法名,你需要调用RN的方法名

第二个参数:传参数,你需要传递的参数

下面这句代码是调用RN中的方法,emit(eventName,params)中的参数与上面的两个参数对应。

mReactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(eventName,params);

2、还记得MainRNPackage类吗,不管是Android调用RN方法也是需要这个类的,这个类初始化会有一个reactContext(RN上下文)参数,你需要保存起来,不管是用全局变量保存还是别的方法。(上图)

f1e71c90ab8208604ccbd31e26b90616.png

看到那个EventEmitter.mReactContext没有,对的我就是这样保存reactContext(RN上下文)的

3、现在方法有了怎么用了,比如......。(上图)

d55e0cb7f3aa358abcda45e40f3aae53.png

直接调用EventEmitter下的sendEvent方法,传入方法名和参数(我这里传null是因为我这里不需要传参)

EventEmitter.sendEvent("RN的方法名",参数);

4、那Android调用了EventEmitter.sendEvent("liveEndCallback",null)方法我RN这边页面要怎么接收了,直接。(上图)

c211dbbed7668f8fd3af94f2dd3b8e2e.png

使用RN中的DeviceEventEmitter.addListener监听Android中的EventEmitter.sendEvent("liveEndCallback",null)方法,方法名要保持一致。

记住页面销毁的时候,移除监听,这样是完成了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值