我有一个WebView,我在AsyncTask.doInBackground中使用loadUrl进行初始化。我将其初始化如下:
webView.post(new Runnable() {
@Override
public void run() {
webView.loadUrl(authURL);
}
});
AsyncTask在Activity.onCreate()中作为最后一个执行,问题是大多数时候网页没有加载,我看到白屏。如果我用处理程序替换webView,那么一切正常。我在这里缺少什么?
答案 0 :(得分:12)
如果需要在UI线程上运行,为什么要在doInBackground()
中执行此操作?
Hander.post()
和View.post()
之间的区别在于Handler
将运行您的代码
在线程上创建Handler
实例(不一定是UI线程),而View
将始终在UI线程上运行它(因为视图绑定到它)。