Cordova第一個項目

創建第一個Helloworld項目,現在來分析運行機制

MainActivity.java

??我們已經將MainActivity導入到了eclipse中。打開scr下com.example.hello下的MainActivity.java


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);
        }

        // Set by <content src="index.html" /> in config.xml
        loadUrl(launchUrl);
    }
}

loadUrl(launchUrl);會在當前的WebView中去加載首頁,當然這個首頁是我們自己配置的,在res/xml/config.xml中。<content src="index.html" />。這個路徑都是指的assets/www下的路徑。

這樣這個app啟動的時候會首先調用這個MainActivity(當然這是在AndroidManifest.xml中配置的),然后Activity啟動的時候會將index.html加載在其WebView中,然后我們就看到了Cordova的頁面。

index.html

...
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
...

??在顯示這個index頁面的時候,會加載兩個js文件。cordova.js就是cordova的api,調用原生內容用的,相當于jar包。

index.js

var app = {
    // 初始化方法,會調用綁定事件的方法
    initialize: function() {
        this.bindEvents();
    },

    // 綁定事件的方法,事件可以是這些:
    // 'load', 'deviceready', 'offline', and 'online'.
    //該事件是在 cordova 載入完成后發生的事件,它表示cordova 加載完成并準備訪問,yourCallbackFunction,相當于程序的入口功能
    bindEvents: function() {
        document.addEventListener('deviceready', this.onDeviceReady, false);
    },

    // deviceready 后事件處理
    onDeviceReady: function() {
        app.receivedEvent('deviceready');
    },

    // 事件處理,更新DOM,改變兩個元素的css
    receivedEvent: function(id) {
        var parentElement = document.getElementById(id);
        var listeningElement = parentElement.querySelector('.listening');
        var receivedElement = parentElement.querySelector('.received');

        listeningElement.setAttribute('style', 'display:none;');
        receivedElement.setAttribute('style', 'display:block;');

        console.log('Received Event: ' + id);
    }
};

//調用初始化方法
app.initialize();

??加載index.js之后,程序會首先調用初始化方法,初始化的時候會去綁定事件監聽:document.addEventListener('deviceready', this.onDeviceReady, false);

??deviceready事件:該事件是在 cordova 載入完成后發生的事件,它表示cordova 加載完成并準備訪問,你傳進去的回調函數,相當于程序的入口函數。

??當cordova準備好的時候,會去首先執行你傳進去的回調函數,這里是onDeviceReady()。這個方法會改變DOM元素的css樣式。

??最終效果就是,當cordova沒有加載完的時候,頁面上Apache Cordova下面那里顯示的是:Connecting to Device(背景是灰色)。加載完之后,cordova準備好之后,原來顯示的消失,現在顯示的是:Device is Ready(背景是綠色)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容