美文网首页
问:在主线程创建Looper和在子线程创建Looper有什么区别

问:在主线程创建Looper和在子线程创建Looper有什么区别

作者: 超级绿茶 | 来源:发表于2021-01-13 10:36 被阅读0次

问:在主线程创建Looper和在子线程创建Looper有什么区别?


44adc05a1565baf5db3f4c97e6476b2e.jpg

答:无论是主线程还是子线程,都是通过Looper的prepare(boolean quitAllowed)方法创建Looper的,但prepare是一个静态私有方法,没法直接调用,所以Looper类又提供了另外两个方法来间接的调用;用于主线程的是prepareMainLooper方法用于子线程的是prepare方法创建(同名不带参数)。prepareMainLooper内部以prepare(false)方式调用,随Looper创建的MessageQueue不允许退出。而用于子线程的prepare方法内部以prepare(true)方式调用,随Looper创建的MessageQueue可以退出,所以用子线程创建的Looper在使用完后要调用quitSafely()或quit()方法退出。BTW:主线程的Looper是自动创建的,而子线程的Looper必须手动调用prepare方法创建。

欢迎加入QQ群聊:口袋里的安卓
或关注微信公众号:口袋里的安卓

相关文章

  • 问:在主线程创建Looper和在子线程创建Looper有什么区别

    问:在主线程创建Looper和在子线程创建Looper有什么区别? 答:无论是主线程还是子线程,都是通过Loope...

  • Android中的Looper , Handler , Mess

    一、Looper 每个线程只能有一个Looper,主线程创建Looper,在ActivityThread的main...

  • Looper 记录

    记录一下looper 创建流程以及looper 保持主线程唯一的机制 looper 的创建是在SystemServ...

  • FW-Handler

    问题1 子线程里可以创建Handler吗 子线程里没prepare looper时创建Handler会抛出Runt...

  • Handler、Looper、MessageQueue、Hanl

    1. 创建Handler对象需要Looper: 在主线程中可以直接创建Handler对象,而在子线程中需要先调用...

  • 消息机制

    消息机制 主线程创建后Looper.prepare创建lopper对象,创建looper的同时或创建消息队列mes...

  • Android消息循环机制

    在非UI线程使用Handler进行线程通信时,一般都需要进行3个步骤: 创建Looper Looper.prepa...

  • Handler与内存泄漏

    一、Handler机制 Handler在创建时,默认与当前所在线程的Looper绑定,也以一个线程的Looper作...

  • 随手记之好问题

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

  • Android Handler机制总结

    >1 主线程创建handler 时 ActivityTheard 自动创建一个主线程的Loop,每个looper ...

网友评论

      本文标题:问:在主线程创建Looper和在子线程创建Looper有什么区别

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