2011-08-05 3 views
0

Я работаю над приложением, где я загружаю веб-страницу с внешнего URL-адреса в веб-просмотре. Загрузка страницы занимает много времени. Если я открою тот же url в собственном браузере android, который загружается абсолютно нормально, но производительность действительно плохой в моем пользовательском веб-просмотре.Пользовательский WebView Загрузка данных очень медленная

вот метод onCreate моей пользовательской деятельности.

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()); 
} 

Есть ли что-нибудь, что я могу сделать, чтобы уменьшить время загрузки веб-страницы через мой пользовательский веб-просмотр. пожалуйста, любая помощь приветствуется.

ответ

2

Удалите эти две строки:

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

и он будет загружаться быстрее.

Вы можете сделать это после того, как ваша страница загрузится, и она удалит все это без уведомления пользователя, хотя это может привести к нечетному поведению. Вы можете удалить его в другом потоке или другом методе.

5

Вы также можете попробовать эти

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 = «истина» в Menifest.xml файл Взятые из нескольких ответов на SO, но это помогло.

+0

setRenderPriority() устарел ... слишком ленив, чтобы узнать, когда, но подумал, что вы должны знать. – Ryan