fox*_*fox 5 multithreading android android-widget android-webview looper
我有一些线程,我在其中创建一些视图并准备它们显示.其中我也有一个WebView.此代码在线程中执行:
WebView lGraphWebView = null;
try{
lGraphWebView = new WebView(AppController.getAppController());
}catch (Exception e) {
Log.d("info", "error: " +e );
}
Run Code Online (Sandbox Code Playgroud)
并抛出以下异常:
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
Run Code Online (Sandbox Code Playgroud)
这有点奇怪,因为当我创建一个简单的按钮时,一切都还可以.所以,任何人都可以解释为什么在创建WebView时我会得到这个例外,如果Looper.prepare()
可以帮到这里吗?提前致谢!
通常,在主线程之外创建视图是不安全的.
在您的特定情况下,这是不允许的,因为在其构造函数中WebView
创建Handler()
用于与UI线程进行通信.但由于Handler
默认构造函数将自身附加到当前线程,并且当前线程没有Looper
运行,因此您将获得此异常.
您可能认为创建一个looper线程(必须至少存活一段时间WebView
)可能对您有所帮助,但这实际上是一种冒险的方法.我不推荐它.
你应该坚持WebView
在主线程中创建s.所有控件通常都针对快速构造进行了优化,因为它们几乎总是在UI线程中创建.
归档时间: |
|
查看次数: |
4317 次 |
最近记录: |