WebView 加载缓慢 url
WebView slow loading url
在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。这个问题主要发生在第一次充电时(恶化),即偏离activity和return最好的事情时间很短(3 ~ 4秒)。
问题出在这一行。
webView.setWebViewClient(new WebViewClient());
奇怪的是,将客户端添加到 webview 加载时间会增加。当我删除这条线时,时间下降了 2 秒。
在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。这个问题主要发生在第一次充电时(恶化),即偏离activity和return最好的事情时间很短(3 ~ 4秒)。
问题出在这一行。
webView.setWebViewClient(new WebViewClient());
奇怪的是,将客户端添加到 webview 加载时间会增加。当我删除这条线时,时间下降了 2 秒。