美文网首页
Toast只能在主线程中使用吗

Toast只能在主线程中使用吗

作者: 四喜汤圆 | 来源:发表于2018-05-30 09:08 被阅读32次

并不一定在主线程,只要 Toast show 的线程有可用 Looper 对象即可(即 Hanlder 可用),主线程默认有 Looper,其他线程默认没有,具体用法如下。

//主线程,直接可用
Toast.makeText(context, "xxx", Toast.LENGTH_SHORT).show();
//子线程提供Looper也可用
new Thread() {
    @Override
    public void run() {
        Looper.prepare();
        Toast.makeText(context, "xxx", Toast.LENGTH_SHORT).show();
        Looper.loop();
    }
}.start();
//崩溃,提示Can't toast on a thread that has not called Looper.prepare()
new Thread() {
    @Override
    public void run() {
        Toast.makeText(context, "xxx", Toast.LENGTH_SHORT).show();
    }
}.start();

参考文献

Toast只能在主线程中使用吗

相关文章

网友评论

      本文标题:Toast只能在主线程中使用吗

      本文链接:https://www.haomeiwen.com/subject/hazzjftx.html