今天又看了看以前写的安卓实验,有一个问题一直没处理好,就是我在网络请求的时候,我根据返回的信息给出一些提示,常见的就是吐司,类似这种,可以更好的和人交互,但是当我把吐司写在网络请求中,程序就会直接崩溃掉,┭┮﹏┭┮
错误的信息是这样提示的:
Can't create handler inside thread that has not called Looper.prepare()
翻译:无法在没有调用 Looper.prepare() 的线程中创建 handler
然后大概就是在子线程中使用toast,需要关联handler,然后handler调用looper.prepare这个方法。
它用 Handler 只是为了用队列和时间控制排队显示吐司。
子主线程中没有开启Looper,而handler对象必须绑定Looper对象需要调用Looper.prepare()来给线程创建一个消息循环,调用Looper.loop()来使消息循环起作用。
因为安卓中,网络请求是放在子线程中的。在主线程中使用toast是不需要引用handler的。
将looper添加进去,
就能成功实现toast吐司提示了。