Android webviewネットワークページローカル(assets)からjsライブラリをロード
3725 ワード
転載:http://www.ithao123.cn/content-572804.html
[要旨:プロジェクト中の劣化問題に遭遇し、webviewの減載ページでは流量を消費するが、大部分の流量はjs戦画像ファイルを台無しにしている.jsライブラリ戦素材ファイルを現地に置くと、流量script src=android.resource:/]を大幅に節約できる.
目の中で少し最適化の問題に出会って、webviewがロードしたページは比較的に流量を消費して、 しかし、ほとんどのトラフィックはjsとピクチャファイルに浪費されており、jsライブラリと素材ファイルをローカルに置くと、トラフィックを大幅に節約できます.
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;
}
[要旨:プロジェクト中の劣化問題に遭遇し、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;
}