加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

React-native Android Java Module如何暴露自己的方法给js

发布时间:2020-12-15 04:47:15 所属栏目:百科 来源:网络整理
导读:最近在看React-native,对内部实现很感兴趣,自己写了Module注册进去,并且在js中调用,很好奇自己的方法是怎么暴露给js的,看了BaseJavaModule的源码,里面有方法是如何暴露的。 @OverridepublicfinalMapString,NativeMethodgetMethods(){MapString,NativeM

最近在看React-native,对内部实现很感兴趣,自己写了Module注册进去,并且在js中调用,很好奇自己的方法是怎么暴露给js的,看了BaseJavaModule的源码,里面有方法是如何暴露的。

@Override
publicfinalMap<String,NativeMethod>getMethods(){
Map<String,NativeMethod>methods=newHashMap<String,NativeMethod>();
Method[]targetMethods=getClass().getDeclaredMethods();
for(inti=0;i<targetMethods.length;i++){
MethodtargetMethod=targetMethods[i];
//找有@ReactMethod注解的方法
if(targetMethod.getAnnotation(ReactMethod.class)!=null){
StringmethodName=targetMethod.getName();
if(methods.containsKey(methodName)){
//Wedonotsupportmethodoverloadingsincejsseesafunctionasanobjectregardless
//ofnumberofparams.
thrownewIllegalArgumentException(
"JavaModule"+getName()+"methodnamealreadyregistered:"+methodName);
}
methods.put(methodName,newJavaMethod(targetMethod));
}
}
returnmethods;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读