您的位置:首页 > 移动开发 > Android开发

cordova-android源代码分析

2015-07-06 15:36 453 查看
最近研究了一下cordova的源码,以下是从初始化到载入页面的部分。

从代码看,主activity是下面的MainActivity:



如上图。可以看出此类继承自CordovaActivity父类,这是Cordova自己封装的类。

MainActivity这个类很简单,就只有一个onCreate方法,了解android的就不多说这个方法本身了,现在只看他的内容,主要实现了两个方法:super.init()以及loadUrl(launchUrl)。先看第一个方法,super也就是执行了父类的方法,所以先看这个init方法:



init方法中只有一句,this.init(appView,null,null);this就是调用这个类本身的方法,也就是当前init方法下面的init方法:如上图。

下面这个init方法初始化了很多数据,而且还获取了传来的几个参数,比如"appView"。那么"appView"变量的值是多少呢。其实我们在执行子类的oncreate方法时还执行了一个方法,上面没有提,就是super.onCreate(saveInstanceState);方法。这个方法同样也是执行了父类的方法-----onCreate。所以我们需要先看这个父类方法。如下:



首先看到initConfig()方法,是用来初始化配置参数的。





主要作用是读取config.xml文件,并存储在相应的变量或者Sharedpreference中用于之后的使用。然后是设置标题方法,设置是否全屏等。所以现在再回去看init方法,



其中有初始化载入图片时间以及载入图片名称,初始化appView,最重要的我们看createViews()方法,如下:



注释相信写的也比较明白了,这个也就是cordova的主view界面,主要有个LinearLayout和在其中的webview。这个部分就相当于activity的xml布局了,当然现在还没有数据载入因为这个布局主要是一个webView(当然这里的webview是CordovaWebView)。那么从哪里载入数据呢,我们再回到最初的MainActivity中就可以看到最后一个方法:loadUrl(launchUrl);这就是往webView载入页面的方法。当然这个也是继承自CordovaActivity的方法,所以我们再看这个方法的具体内容:



别的就不谈了,直接进入到CordovaWebView的appView.loadUrlInfoView(url,true);





最后执行了super.loadUrl(url);也就是执行了webView的loadUrl方法。

以上就是cordova载入页面的整个过程,之后再补充插件的内容,这部分涉及js较多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: