Данните за потребителски уеб изглед се зареждат много бавно

Работя върху приложение, където зареждам уеб страница от външен URL адрес в уеб изглед. Зареждането на страницата отнема много време. Ако отворя същия URL адрес в родния браузър на Android, това се зарежда абсолютно добре, но производителността е наистина лоша в моя персонализиран уеб изглед.

тук е методът onCreate на моята customWebView активност.

 protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.custom_web_view);
    String uri = getIntent().getExtras().getString("uri");
    webView = (WebView) findViewById(R.id.cus_webview);
    dialog = ProgressDialog.show(CustomeWebViewActivity.this, "", "Loading. Please wait...", true, true);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
    webView.getSettings().setPluginsEnabled(false);
    webView.getSettings().setSupportMultipleWindows(false);
    webView.getSettings().setSupportZoom(false);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setSavePassword(false);
    webView.setVerticalScrollBarEnabled(false);
    webView.setHorizontalScrollBarEnabled(false);
    webView.setWebChromeClient(new MyWebChromeClient());

    webView.clearCache(true);
    webView.clearHistory();
    webView.loadUrl(uri);
    webView.setWebViewClient(new MyWebView());
}

Има ли нещо, което мога да направя, за да намаля времето за зареждане на уеб страницата чрез моя персонализиран уеб изглед. моля, всяка помощ се оценява.


person Usama Sarwar    schedule 05.08.2011    source източник


Отговори (2)


Премахнете тези два реда:

webView.clearCache(true);
webView.clearHistory();

и ще се зареди по-бързо.

Можете да направите това, след като страницата ви се е заредила, и тя ще я премахне, без потребителят да забележи, въпреки че може да доведе до странно поведение. Можете да го премахнете в друга нишка или друг метод.

person Blundell    schedule 17.08.2011

Можете също да опитате тези

webView.getSettings().setRenderPriority(RenderPriority.HIGH);
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

и условна проверка.

if (Build.VERSION.SDK_INT >= 11){
    webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}

и може също да зададе hardwareAccelerated="true" във файла Menifest.xml Изваден от множество отговори на SO, но помогна.

person Husyn    schedule 01.06.2013
comment
setRenderPriority() е отхвърлен... твърде мързелив, за да разбере кога, но реших, че всички трябва да знаете. - person Ryhan; 06.03.2015