Android webviewネットワークページローカル(assets)からjsライブラリをロード

3725 ワード

転載:http://www.ithao123.cn/content-572804.html
[要旨:プロジェクト中の劣化問題に遭遇し、webviewの減載ページでは流量を消費するが、大部分の流量はjs戦画像ファイルを台無しにしている.jsライブラリ戦素材ファイルを現地に置くと、流量script src=android.resource:/]を大幅に節約できる.
目の中で少し最適化の問題に出会って、webviewがロードしたページは比較的に流量を消費して、 しかし、ほとんどのトラフィックはjsとピクチャファイルに浪費されており、jsライブラリと素材ファイルをローカルに置くと、トラフィックを大幅に節約できます.
<span class="pln" style="border:0px;vertical-align:baseline;"> </span><span class="atn" style="border:0px;vertical-align:baseline;">src</span><span class="pun" style="border:0px;vertical-align:baseline;">=</span><span class="atv" style="border:0px;vertical-align:baseline;">"android.resource://com.example.sample/raw/js_script"</span><span class="tag" style="border:0px;vertical-align:baseline;">></span></span></pre> 
  <p><span style="font-size:18px;">  stackoverflow    , js  raw    ,            ,      </span></p> 
  <pre class="default prettyprint prettyprinted" style="border:0px;vertical-align:baseline;overflow:auto;">  </pre> 
  <pre class="default prettyprint prettyprinted" style="border:0px;vertical-align:baseline;overflow:auto;"><span style="font-size:18px;">  html      ,js  asset,  stringHtml   </span></pre> 
  <pre class="default prettyprint prettyprinted" style="border:0px;vertical-align:baseline;overflow:auto;"><span style="font-size:18px;">String local = "file:///android_asset"; WV_View.loadDataWithBaseURL(local, stringHtml, "text/html", "utf-8",	null); </span></pre> 
  <pre class="default prettyprint prettyprinted" style="border:0px;vertical-align:baseline;overflow:auto;"><span style="font-size:18px;"> </span></pre> 
  <pre class="default prettyprint prettyprinted" style="border:0px;vertical-align:baseline;overflow:auto;"><span style="font-size:18px;">     <script><script type="text/javascript" s<span style="font-family:Arial, Helvetica, sans-serif;">rc="file:///android_asset/xxx.js"</span> /> 
    ,  ,       ,          
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 android.content.ContentProvider;  
import android.content.ContentValues;  
import android.database.Cursor;  
import android.net.Uri;  
import android.os.ParcelFileDescriptor;  
  
public class LocalFileContentProvider extends ContentProvider {  
    private static final String URI_PREFIX = "content://lu.mind.androidphpmanual";  
  
    public static 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;  
    }