Android出现java.lang.RuntimeException: Can't toast on a thread that has not called Looper.prepare()

Android出现java.lang.RuntimeException: Can't toast on a thread that has not called Looper.prepare()


今天又是写代码的美好一天>_<
往常运行的好好的程序,今天运行在弹出 吐司(Toast)时却出现了java.lang.RuntimeException: Can’t toast on a thread that has not called Looper.prepare(),ε=(´ο`*)))唉,我也很无奈。于是去网上搜了一下解决办法。
然后就在网上找到了一个容易懂得解决办法 https://www.jianshu.com/p/86459c23bdf5 ,非常感谢这位作者大大。
我遇到的解决办法是作者大大中的第一种。
根据作者大大的代码跟踪才得知了,程序在 主线程中创建handler后会创建一个looper对象,而子线程却不会,所以我在我使用Toast前先执行 Looper.prepare();使用Toast后执行 Looper.loop();

if (bmpPhoto == null) {
                    Looper.prepare();
                    Toast.makeText(mContext, "取图失败!", Toast.LENGTH_SHORT).show();
                    Looper.loop();// 进入loop中的循环,查看消息队列
                    return;
                }

注:bmpPhoto是我获取的一个图片Bitmap;

你可能感兴趣的:(Android)