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

前端之家收集整理的这篇文章主要介绍了React-native Android Java Module如何暴露自己的方法给js前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

最近在看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;
}

猜你在找的React相关文章