1. 程式人生 > >android webview 網路頁面從本地(assets)載入js庫

android webview 網路頁面從本地(assets)載入js庫

轉載:http://www.ithao123.cn/content-572804.html

[摘要:專案中的碰到一面劣化題目,webview減載的頁裡比擬耗流量, 然則大區域性的流量皆糟蹋正在了js戰圖片檔案,若是把js庫戰素材檔案放正在當地,能夠大大儉省流量 script src = android.resource://]

目中的遇到一點優化問題,webview載入的頁面比較耗流量,  但是大部分的流量都浪費在了js和圖片檔案,如果把js庫和素材檔案放在本地,可以大大節省流量

<scriptsrc="android.resource://com.example.sample/raw/js_script"
>

按照stackoverflow上的方法,把js放到raw資料夾中,但是試了很多遍都不太好用,只好換個思路

先把html全部網頁獲取,js放到asset,其中stringHtml是網頁
String local = "file:///android_asset"; WV_View.loadDataWithBaseURL(local, stringHtml, "text/html", "utf-8",	null); 
網頁中  <script><script type="text/javascript" src="file:///android_asset/xxx.js" /></script>
解決問題,另外,網上還有種做法,既然已經解決就沒試驗
http://blog.csdn.net/cauchy8389/article/details/8616515

用ContentProvider來讀取檔案。下面的程式碼示例來自於http://android-phpmanual.googlecode.com/svn

//LocalFileContentProvider.java

[java] view plaincopy
  1. package lu.mind.androidphpmanual;  
  2. import java.io.File;  
  3. import java.io.FileNotFoundException;  
  4. import
     android.content.ContentProvider;  
  5. import android.content.ContentValues;  
  6. import android.database.Cursor;  
  7. import android.net.Uri;  
  8. import android.os.ParcelFileDescriptor;  
  9. publicclass LocalFileContentProvider extends ContentProvider {  
  10.     privatestaticfinal String URI_PREFIX = "content://lu.mind.androidphpmanual";  
  11.     publicstatic String constructUri(String url) {  
  12.         Uri uri = Uri.parse(url);  
  13.         return uri.isAbsolute() ? url : URI_PREFIX + url;  
  14.     }  
  15.     @Override
  16.     public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {  
  17.         File file = new File(uri.getPath());  
  18.         ParcelFileDescriptor parcel = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);  
  19.         return parcel;  
  20.     }