我正在使用在页面上注入一些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来解析网页并获得我想要的内容。
谢谢!
答案 0 :(得分:0)
您无法从后台线程更新UI。 使用
runOnUiThread(new Runnable() {
public void run() {
// Update your UI
}
});
如果需要延迟,请使用ProgressDialog
并提醒用户正在加载页面。