我遇到了崩溃“无法在线程中的onPreExecute中创建未调用Looper.prepare()的线程内的处理程序。我的理解是onPreExecute在UI线程上运行,那么它怎么会崩溃呢?
public void onPreExecute() {
if (loading == null || !loading.isShowing())
loading = ProgressDialog.show(co, "",
"Retrieving Geolocation...", true);
}
很奇怪,它有时有效,有时不适用
答案 0 :(得分:0)
从您的问题看起来就像是在线程中使用onPreExecute()
。
onPreExecute()
是android提供的AsyncTask
类中的方法。如果你覆盖它,那么它将确保该代码在UI线程上运行,而不仅仅是onPreExecute()
代码中的任何地方!
当您重写方法时,一个好主意是始终使用@Override
表示法,这样IDE会通知您是否有任何覆盖给定签名的方法是否存在......
答案 1 :(得分:0)
AsyncTask
Threading rules(几段落下)陈述:
我的猜测是你在后台线程上调用了execute()
。