首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Android

Handler 是怎么完成线程切换的?

  •  
  •   nnegier · 3 天前 · 1393 次点击

    这是我的理解,面试官说我没讲清楚,自己也觉得模糊: “当然是借助 ThreadLocal 啦。 通过 ThreadLocal 可以获得主线程的 Looper 和 MessageQueue。 主线程的 Looper 一直在主线程里面无限循环。”

    特来问问

    5 回复  |  直到 2019-09-12 23:06:01 +08:00
        1
    blackboom   3 天前
    码上开学,有一节讲的不错
    https://www.bilibili.com/video/av49582369
        2
    merpyzf   3 天前
    因为 Handler 的 dispatchMessage 方法是在创建 Handler 的线程中的 Looper 内部调用的,因此 Looper 所处的线程也就决定了你 Handler 提交任务执行所在的线程。
        3
    Vdream   3 天前
    sendMessage 其实是把自己也传过去了 handler 回调就知道是谁了
        4
    bccoder   3 天前
    handler 所属线程的 Looper 会将 msg 从 msgqueue 中取出然后执行相关逻辑。
        5
    mxalbert1996   3 天前 via Android
    楼主是不是对 ThreadLocal 有什么误解? ThreadLocal 就是用来存线程内变量的,通过 ThreadLocal 获取别的线程的变量是什么鬼。。。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   897 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 17ms · UTC 17:54 · PVG 01:54 · LAX 10:54 · JFK 13:54
    ♥ Do have faith in what you're doing.