Android Cordova SDK核心类作用说明及分类
android cordova sdk 可以在 "cordova项目/platforms/android/CordovaLib/src/org/apache/cordova/"下找到
通信接口相关
SystemExposedJsApi.java
该文件主要定义要暴露给JS的方法,并通过以下方法将对象暴露出去
webView.addJavascriptInterface(new SystemExposedJsApi(bridge), "_cordovaNative");
此时可以通过window._cordovaNative.xxx方访问对象中的方法
SystemWebChromeClient.java
简单的说该类是用来拦截webview上的弹框,比如prompt alert confirm 使用该类实现对弹框的拦截
cordova.js中通过prompt方式来实现数据交互也是由该类来负责由js到native的数据接收和处理工作
该类中的onJsPrompt方对应具体逻辑
CordovaBridge.java
SystemWebChromeClient.java 中对onJsPrompt拦截的数据最终由该类来处理,于该类对应的脚本模块为
"cordova/android/promptbasednativeapi",
简言之该类的作用
1:通过前端传来的参数执行具体的插件;
2.设置桥接模式(即native到js的数据是通过何种方式回传的)
3.直接检索原生的变量值并返回给前端(原生执行插件的结果最终由NativeToJsMessageQueue.java对象来维护,
直接检索该变量来获得插件执行结果并返回给前端)
CallbackContext.java
每次exec的操作都将生成一个callbackId,前端将ID传给native并由该类维护ID,之后native根据该ID来搜索于该ID对应的回调方法
前端每次exec的时候都会将回调函数和callbackId做关联
插件处理相关
PluginEntry.java
该类的作用是维护插件的类名,并根据类名来动态生成实例
ConfigXmlParser.java
该文件作用是解析config.xml文件,初始化PlugingEntry
CordovaPlugin.java
任何一个插件均要继承自该类
PluginManager.java
故名思议就用来管理CordovaPlugin对象
PluginResult.java
封装每次插件的执行结果
CoreAndroid.java
核心插件。于该文件对应的前端脚本模块是cordova/plugin/android/app,执行清除缓存,载入url,音量键,菜单键监听等操作
消息处理及反馈相关
NativeToJsMessageQueue.java
用来处理插件的执行结果,并将结果回吐给前端,同时定义桥接模式BridgeMode,并维护桥接模式队列,桥接模式的初始化见
SystemWebViewEngine.java文件 nativeToJsMessageQueue.addBridgeMode
注:CordovaBridge使用来设置桥接模式的也是通过NativeToJsMessageQueue类进行设置
界面相关
SystemWebView.java
SystemWebViewClient.java
SystemWebChromeClient.java
SystemWebViewEngine.java
CordovaWebViewImpl.java
CordovaActivity.java
简而言之webview