簡體   English   中英

使用異步任務在webview中加載url失敗

[英]load url in webview with asynch task fails

我正在嘗試將我的Web視圖加載到另一個線程上,以便在請求加載后,我可以在屏幕上添加一個按鈕。

我這樣做是這樣的:

private class CustomWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {

                MyView myView = new myView();
                myView.setUrl(url);
                myView.setWebView(view);

                new DownloadFilesTask().execute(myView);
            return true;
        }
    }


private class DownloadFilesTask extends AsyncTask<MyView, Integer, Long> {
        protected Long doInBackground(MyView... myView) {

            long totalSize = 0;
            MyView amyView = myView[0];

           WebView view = amyView.getWebView();
           String url = amyView.getUrl();
            view.loadUrl(url);

            return totalSize;
        }

        protected void onProgressUpdate(Integer... progress) {

        }

        protected void onPostExecute(Long result) {
            rl.setVisibility(View.VISIBLE);
        }
    }

我得到錯誤:

  Caused by: java.lang.RuntimeException: java.lang.Throwable: Warning: A WebView method was called on thread 'AsyncTask #2'. All 

WebView方法必須在UI線程上調用。 WebView的將來版本可能不支持在其他線程上使用。

網址加載后如何使視圖可見?

您不應在后台線程中加載WebView 它需要加載到UI線程上。

我將向WebView添加一個偵聽器,當URL加載完成時,您可以添加按鈕。

yourWebView.setWebViewClient(new WebViewClient() {

   public void onPageFinished(WebView view, String url) {
        // add your button here
    } 
}); 

yourWebView.loadUrl(url);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM