AsyncTask中的WebView doInBackground方法?

时间:2016-01-13 00:02:26

标签: android performance webview android-intentservice

我正在使用在页面上注入一些JS代码的WebView。此webview具有"多米诺骨牌效应",如:

webView.setWebViewClient(new WebViewClient{
  ...
@Override
public void onPageFinished(WebView view, String url) {
    if(url.contains("http://A")){
        view.loadUrl("javascript: window.location.assign('http://B');")
    } else if(url.contains("http://B"){
        //do another stuff
    }
  ...
});

大约需要10~15秒。我目前直接在Activity上执行此操作,但我对其性能不满意。而且,如果用户在此过程中最小化应用程序,它将停止工作。

现在我正在尝试doInBackground(),但我既不能在非UI线程上实例化WebView,也不能在收到的WebView上调用loadUrl()(来自AsyncTask< ;>参数)。我该怎么办?

我是否应该使用IntentService完成所有这些工作?

编辑:我正在注入JS来返回一个ArrayList。我只使用webview来解析网页并获得我想要的内容。

谢谢!

1 个答案:

答案 0 :(得分:0)

您无法从后台线程更新UI。  使用

 runOnUiThread(new Runnable() {
                public void run() {

                // Update your UI

            }
        });

如果需要延迟,请使用ProgressDialog并提醒用户正在加载页面。