Android 开发中遇到的 Can’t create handler inside thread that has not called Looper.prepare问题

Android开发跟Web开发比起来,真是复杂很多,难怪Phonegap能获得成功,下一个Android爆发点一定是开发模式上的变革,类似于Servlet向JSP的转换。回到这个问题上,在UI中如果需要从远程端的服务器获取数据,为了防止UI无响应,我们常会用AsyncTask之类的方法拿数据,然后在UI上摆一个loading spin。当拿到数据并处理后,我们会迫不及待的给UI一些回应,比如Toast一个结果,如果此时app FC,我们会在debug window上看到Can't create handler inside thread that has not called Looper.prepare这样的异常。是什么造成这个问题呢?
其原因是doInBackground并不在Activity的主UI线程上,如果在这里进行Activity级别的操作,就产生生这样的异常。解决方法也很简单,可将处理过程放在onPostExecute里,因为此时已经回到了住UI线程。说起来挺简单,弄不好真会让你抓狂半天,因为网上只有俺这里才说的这么明白滴。

发表评论

电子邮件地址不会被公开。

CAPTCHA image
*