Мне не известно о проблемах производительности конкретного устройства, связанных, в частности, со временем загрузки WebView.Однако может потребоваться добавить как тайм-аут запроса, так и прослушиватель изменения подключения к сети.Для получения дополнительной информации вы можете синхронизировать запросы и сообщать информацию об устройстве и подключении по медленным запросам.
handler = new Handler();
WebView webView = findViewById(R.id.webview);
webView.setWebViewClient(new WebViewClient() {
final long WEBVIEW_REQUEST_TIMEOUT = ...;
final long WEBVIEW_SLOW_REQUEST_THRESHOLD = ...;
Runnable onRequestTimeout = null;
@Override
public void onPageStarted(WebView view, final String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon); // current impl is no op but be fwd compatible
saveRequestStartTime();
onRequestTimeout = new Runnable() {
@Override
public void run() {
handleRequestComplete(url, WebViewClient.ERROR_TIMEOUT);
}
};
handler.postDelayed(onRequestTimeout, WEBVIEW_REQUEST_TIMEOUT);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url); // current impl is no op but be fwd compatible
handleRequestComplete(url, 0); // Return 0 onSuccess. All WebViewClient defined errors < 0.
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl); // current impl is no op but be fwd compatible
handleRequestComplete(failingUrl, errorCode);
}
private void handleRequestComplete(String url, int errorCode) {
if (onRequestTimeout != null) {
handler.removeCallbacks(onRequestTimeout);
}
onRequestTimeout = null;
final long elapsedTime = getRequestElapsedTime();
if (elapsedTime > WEBVIEW_SLOW_REQUEST_THRESHOLD) {
reportSlowRequest(elapsedTime, url, errorCode);
}
clearRequestTime();
}
private void saveRequestStartTime() {...}
private long getRequestElapsedTime() {...}
private void clearRequestTime() {...}
private void reportSlowRequest(long elapsedTime, String url, int errorCode) {...}
});