随手记之好问题

作者: 曾是个文物 | 来源:发表于2020-03-20 18:01 被阅读0次

1.Toast必须在UI(主)线程使用?

            if (looper == null) {
                // Use Looper.myLooper() if looper is not specified.
                // 调用Looper.myLooper这个函数,
                //也就是会从ThreadLocal<Looper> sThreadLocal 去获取当前线程的looper。
                looper = Looper.myLooper();
                if (looper == null) {
                // 没有获取到当前线程的looper的话,就会抛出这个异常
                // 而在子线程中创建了looper就不会抛出异常了。
                    throw new RuntimeException(
                       "Can't toast on a thread that has not called Looper.prepare()");
                }
            }
            // 当looper里面有Message的时候会将message取出来,
            // 然后会通过handler的handleMessage来处理。
            mHandler = new Handler(looper, null) {
                @Override
                public void handleMessage(Message msg) {
                    switch (msg.what) {
                        case SHOW:  // 显示
                        case HIDE:  // 隐藏
                        case CANCEL: // 取消
                    }
                }
            };

1.从创建TN的实例,并传入looper,此时的looper还是null。
2.进入TN的构造函数可以看到会有looper是否为null的判断,并且在当looper
为null时,会从当前线程去获取looper(Looper.myLooper()),如果还是获取不到,会抛出这个异常信息:Can't toast on a thread that has not called Looper.prepare()。
3.而有同学会误会只能在UI线程toast的原因是:UI(主)线程在刚创建的时候就有创建looper的实例了,在主线程toast的话,会通过Looper.myLooper()获取到对应的looper,所以不会抛出异常信息
4.而不能直接在子线程程中toast的原因是:子线程中没有创建looper的话,去通过Looper.myLooper()获取到的为null,就会throw new RuntimeException(
"Can't toast on a thread that has not called Looper.prepare()");
综上,“Toast必须在UI(主)线程使用”这个说法是不对滴!

相关文章

  • 随拍,手记。

  • 随手记之好方法

    1.Android 中Stream 的使用(向下兼容) step1:implementation 'com.ann...

  • 随手记之好问题

    1.Toast必须在UI(主)线程使用? 1.从创建TN的实例,并传入looper,此时的looper还是null...

  • 恶意:上

    事件之章:野野口修的手记 疑惑之章:加贺恭一郎的记录 解决之章:野野口修的手记 探究之章:加贺恭一郎的独白 告白之...

  • “随手记”产品运营策略复盘及思考

    目 录 1 随手记产品概述1.1 随手记产品所处生命周期1.2 随手记产品现阶段核心问题1.3 ...

  • 随手记投资安全吗 ?累计下载用户超过2.2亿

    提起随手记,不少人第一反应是记账,然而,使用随手记的用户会发现,随手记上也可以买理财产品,那么,问题来了——随手记...

  • 『好物』 便签墙 DIY 完全教程

    你负责安心工作,生活的琐碎就交给它吧! 我们常会遇到这些问题:随手记下的晚饭清单转身就不记得放在哪里;信用卡账单随...

  • 2017会计人调查报告

    日前,随手科技旗下国内用户量最大的记账理财App随手记、新兴的家庭及中小企业理财服务平台随管家联合金蝶集团旗下云之...

  • 2020-10-21

    顾问手记之八:解决问题之“科学的方法” 瑞波友李2016-10-21 作为企业顾问发现管理者们无法建立清晰的结...

  • 【现存问题系列01】没有一个好的问题管理系统

    没有一个好的问题管理系统 现在是什么情况 遇到了问题,随手记在doit/纸张上/为知笔记/dayone/dashn...

网友评论

    本文标题:随手记之好问题

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