1. 程式人生 > >WebView loadUrl,loadData,loadDataBase

WebView loadUrl,loadData,loadDataBase

loadUrl會將整個頁面載入,類似於瀏覽器開啟一樣,渲染整個頁面。包括排版佈局。

如果我們用自己的排版,只關心資料的話可以考慮用loadData和loadDataWithBaseURL 。

loadData:

public void loadData 


  data是要載入的資料型別,但在資料裡面不能出現英文字元:'#', '%', '\' , '?' 這四個字元,如果有的話可以用 %23, %25, %27, %3f,這些字元來替換,在平時測試時,你的資料時,你的資料裡含有這些字元,但不會出問題,當出問題時,你可以替換下。

       %,會報找不到頁面錯誤,頁面全是亂碼。亂碼樣式見符件。

       #,會讓你的goBack失效,但canGoBAck是可以使用的。於是就會產生返回按鈕生效,但不能返回的情況。

       \ 和? 我在轉換時,會報錯,因為它會把\當作轉義符來使用,如果用兩級轉義,也不生效,我是對它無語了。

我們在使用loadData時,就意味著需要把所有的非法字元全部轉換掉,這樣就會給執行速度帶來很大的影響,因為在使用時,在頁面stytle中會使用很多%號。頁面的資料越多,執行的速度就會越慢。

      data中,有人會遇到中文亂碼問題,解決辦法:引數傳"utf-8",頁面的編碼格式也必須是utf-8,這樣編碼統一就不會亂了。別的編碼我也沒有試過。

在使用loadDataWithBaseURL時,需要注意的就是 baseUr:雖然API上寫的是要傳一個Url,但我在用時,發現傳一個Url並不可以,我發現這個就是一個標誌位,用來標誌當前頁面的Key值的,而historyUrl就是一個value值,在載入時,它會把baseUrl和historyUrl傳到List列表中,當作歷史記錄來使用,當前進和後退時,它會通過baseUrl來尋找historyUrl的路徑來載入historyUrl路徑來載入歷史介面,需要注意的就是history所指向的必須是一個頁面,並且頁面存在於SD卡中或程式中(assets),loadDataWithBaseURL,它本身並不會向歷史記錄中儲存資料,要想實現歷史記錄,需要我們自己來實現,也許是我的技術有限,我有了比較笨的訪求來實現:就是在載入頁面時,我把資料另外的寫到一個html頁面中,並把它儲存到SD中,當點選返回時,它會通過historyUrl指向的路徑來載入頁面,這樣就解決了歷史記錄問題。

上面這兩種方法,我建議使用後者,雖然loadData的歷史記錄不需要我們自己來實現,但在使用時,我們必須把所有的%,#,\,?轉換掉,在轉換時,也許會遇到別的困難,我也沒有測完。這就兩個載入上後者比前者快一到兩倍。


loadDataWithBaseURL :


public

void loadDataWithBaseURL 

在使用loadDataWithBaseURL時,需要注意的就是 baseUr:雖然API上寫的是要傳一個Url,但我在用時,發現傳一個Url並不可以,我發現這個就是一個標誌位,用來標誌當前頁面的Key值的,而historyUrl就是一個value值,在載入時,它會把baseUrl和historyUrl傳到List列表中,當作歷史記錄來使用,當前進和後退時,它會通過baseUrl來尋找historyUrl的路徑來載入historyUrl路徑來載入歷史介面,需要注意的就是history所指向的必須是一個頁面,並且頁面存在於SD卡中或程式中(assets),loadDataWithBaseURL,它本身並不會向歷史記錄中儲存資料,要想實現歷史記錄,需要我們自己來實現,也許是我的技術有限,我有了比較笨的訪求來實現:就是在載入頁面時,我把資料另外的寫到一個html頁面中,並把它儲存到SD中,當點選返回時,它會通過historyUrl指向的路徑來載入頁面,這樣就解決了歷史記錄問題。

上面這兩種方法,我建議使用後者,雖然loadData的歷史記錄不需要我們自己來實現,但在使用時,我們必須把所有的%,#,\,?轉換掉,在轉換時,也許會遇到別的困難,我也沒有測完。這就兩個載入上後者比前者快一到兩倍。


在使用loadDataWithBaseURL時,需要注意的就是 baseUr:雖然API上寫的是要傳一個Url,但我在用時,發現傳一個Url並不可以,我發現這個就是一個標誌位,用來標誌當前頁面的Key值的,而historyUrl就是一個value值,在載入時,它會把baseUrl和historyUrl傳到List列表中,當作歷史記錄來使用,當前進和後退時,它會通過baseUrl來尋找historyUrl的路徑來載入historyUrl路徑來載入歷史介面,需要注意的就是history所指向的必須是一個頁面,並且頁面存在於SD卡中或程式中(assets),loadDataWithBaseURL,它本身並不會向歷史記錄中儲存資料,要想實現歷史記錄,需要我們自己來實現,也許是我的技術有限,我有了比較笨的訪求來實現:就是在載入頁面時,我把資料另外的寫到一個html頁面中,並把它儲存到SD中,當點選返回時,它會通過historyUrl指向的路徑來載入頁面,這樣就解決了歷史記錄問題。

上面這兩種方法,我建議使用後者,雖然loadData的歷史記錄不需要我們自己來實現,但在使用時,我們必須把所有的%,#,\,?轉換掉,在轉換時,也許會遇到別的困難,我也沒有測完。這就兩個載入上後者比前者快一到兩倍。