美文网首页
Android Framework学习之线程的消息队列

Android Framework学习之线程的消息队列

作者: 一只二凡子 | 来源:发表于2022-12-27 09:37 被阅读0次

线程的消息队列是怎么创建的?

子线程创建handler

子线程中Looper.prepare(): 默认是可以退出

主线程的Looper.prepareMainLooper: 是不能退出的

handlers 发消息到MessageQueue,消息里有个target字段指向特定的handler,messageQueue将消息发送到target指定的handler,

MessageQueue在Native层的初始化

native层的Looper是整个消息循环的核心部分

消息队列整体架构

问题:

可以在子线程创建Handler吗?

可以,需要先Looper.prepare()

2. 主线程的Looper和子线程的Looper有什么区别?

主线程的Looper是不能退出的,子线程的Looper可以退出,子线程的Looper需要自己去prepare(创建),主线程的Looper在应用进程启动时就创建好了

3. Looper和MessageQueue有什么关系?

Java层Looper和MessageQueue是一对一关系,native层也是Looper和NativeMessageQueue一对一的关系

4. MessageQueue是怎么创建的?

        在java层创建Looper时会创建MessageQueue,创建MessageQueue时会调用native层创建相应的NativeMessageQueue, native层的MessageQueue会创建一个Looper,这个Looper会创建一个eventFD,并且添加一个可读事件到epol里

相关文章

  • Android系统源码情景分析-学习笔记-13

    Android 应用程序的消息处理机制 Android应用程序是通过消息来驱动。 创建线程消息队列 Androi...

  • 消息循环机制及其原理

    一、什么是消息循环 消息循环概述:Android的消息循环是针对线程的,每个线程都可以有自己的消息队列和消息循环,...

  • 安卓中的消息循环模型

    引子 Android应用程序是通过消息来驱动的,即在应用程序的主线程(UI线程)中有一个消息循环,负责处理消息队列...

  • Android Framework学习之UI线程

    1.什么是UI线程? 2.UI线程的启动流程,消息循环是怎么创建的? 3.了解Android的UI显示原理,UI线...

  • Android开发(6) - 初遇Handler

    概述 Handler是线程通讯工具类。用于传递消息。它有两个队列:1.消息队列2.线程队列 消息队列使用sendM...

  • C#线程安全队列ConcurrentQueue

    ConcurrentQueue队列是一个高效的线程安全的队列,是.Net Framework 4.0,System...

  • Android 多线程之线程池

    Android 多线程系列 Android 多线程之几个基本问题 Android 多线程之阻塞队列 Android...

  • Android 多线程之阻塞队列

    Android 多线程系列 Android 多线程之几个基本问题 Android多线程之常见的线程形态 阻塞队列 ...

  • Android 中的多线程

    Android 中的多线程 Handler Handler必须在主线程中创建。 默认情况下,消息队列只有一个,即主...

  • 手写Android-Handler

    Handler机制,是Android系统的消息队列,一般用于处理主线程的页面绘制等消息处理。 前言 Handler...

网友评论

      本文标题:Android Framework学习之线程的消息队列

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