上一篇讲述了cordova
工程的创建,并成功运行起来,那cordova是如何加载html页面的,本文就来详细分析一下。
MainActivity
分析
App的入口是MainActivity
,打开MainActivity
可以看到是继承于CordovaActivity
,在onCreate中的loadUrl
方法和launchUrl
属性都是从CordovaActivity
中继承来的,所以CordovaActivity
是cordova
的入口。
public class MainActivity extends CordovaActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// enable Cordova apps to be started in the background
// 获取外部传来的数据
Bundle extras = getIntent().getExtras();
if (extras != null && extras.getBoolean("cdvStartInBackground", false)) {
moveTaskToBack(true);
}
// 加载html
// Set by <content src="index.html" /> in config.xml
loadUrl(launchUrl);
}
}
CordovaActivity
分析
一、OnCreate方法
进入CordovaActivity
类,可以看到CordovaActivity
继承于Activity
,这个类主要是完成对cordova的基本配置和初始化工作,根据Activity的生命周期,先从OnCreate开始分析:
1、在OnCreate中第一个方法是loadConfig
方法,如下所示:
protected void loadConfig() {
ConfigXmlParser parser = new ConfigXmlParser();
parser.parse(this);
preferences = parser.getPreferences();
preferences.setPreferencesBundle(getIntent().getExtras());
launchUrl = parser.getLaunchUrl();
pluginEntries = parser.getPluginEntries();
Config.parser = parser;
}
loadConfig方法首先初始化了ConfigXmlParser
类,而ConfigXmlParser
的主要属性和方法有:
CordovaPreferences
类:负责解析config.xml
的<preference name="loglevel" value="DEBUG" />
节点;launchUrl
属性值:默认是file:///android_asset/www/index.html
;- setStartUrl方法:判断
config.xml
中是否配置了<content src="index.html" />
; parse
方法:解析了res/xml目录下的config.xml
文件
2、初始化完配置,接着初始化日志,设置日志级别。
String logLevel = preferences.getString("loglevel", "ERROR"