原因分析:在线程中调用了Toast(或者Dialog提示)。
解决方法:在调用Toast(或者AlertDialog)的地方的前面加上Looper.prepare(),后边加上Looper.loop()即可解决问题;也就是说用Looper.prepare()和Looper.loop()把Toast前后包起来。
Looper.loop()会死循环堵塞线程
其他解决方案:
在主线程中定义handler,
然后在子线程中用handler.post如下:
new Runnable(){
@Override
public void run() {
mHandler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(mApp.getApplicationContext(),"服务器异常,请稍后重试",Toast.LENGTH_SHORT).show();
}
});
}
}.run();