android webview 網路頁面從本地(assets)載入js庫
阿新 • • 發佈:2019-02-18
轉載: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- package lu.mind.androidphpmanual;
- import java.io.File;
- import java.io.FileNotFoundException;
- import
- import android.content.ContentValues;
- import android.database.Cursor;
- import android.net.Uri;
- import android.os.ParcelFileDescriptor;
- publicclass LocalFileContentProvider extends ContentProvider {
- privatestaticfinal String URI_PREFIX = "content://lu.mind.androidphpmanual";
- publicstatic String constructUri(String url) {
- Uri uri = Uri.parse(url);
- return uri.isAbsolute() ? url : URI_PREFIX + url;
- }
- @Override
- public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
- File file = new File(uri.getPath());
- ParcelFileDescriptor parcel = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
- return parcel;
- }