【发布时间】:2015-10-07 01:18:46
【问题描述】:
在 WebView 中测试一个 url 需要大约 6 ~ 8 秒来加载。与 iOS 相比,WebView 只需 2 秒。两台设备都在同一个wifi网络上。我在 WebView 中使用以下设置。
//Manifest
//android:hardwareAccelerated="true"
webView = (WebView) findViewById(R.id.wvProduct);
final WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setAppCacheEnabled(true);
settings.setDomStorageEnabled(true);
settings.setLoadsImagesAutomatically(true);
settings.setDatabaseEnabled(true);
settings.setRenderPriority(WebSettings.RenderPriority.HIGH);
settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
//webView.setWebViewClient(new MyWebClient());
webView.loadUrl(url);
if (Build.VERSION.SDK_INT >= 19) {
webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
} else {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
}
public class MyWebClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view,
String urlNewString) {
view.loadUrl(urlNewString);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
if(LoadingDialog.instanceProgressDialog().isShowing()) {
LoadingDialog.dismissDialog();
}
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
if(LoadingDialog.instanceProgressDialog() != null) {
if (LoadingDialog.instanceProgressDialog().isShowing()) {
LoadingDialog.dismissDialog();
}
}
Log.e(Constants.ERROR,
"****Error: " + description + " code: " + errorCode);
}
}
移除用于移除加载器对话框的 WebViewClient 并赢得 2 秒 (4~5) 加载的陌生人。我怎样才能提高 WebView 加载时间,这个 url 是一个移动商务,包含图像和 javascript。这个问题主要发生在第一次充电(即恶化),即离开活动并返回最好的东西时间短(3~4秒)。
【问题讨论】: