摘要:
在前文《Android多线程分析之二:Thread的实现》中已经详细分析了Android Thread 是如何创建,运行以及销毁的,其重点是对相应 native 方法进行分析,今天我将聚焦于 Android Framework 层多线程相关的类:Handler, Looper, MessageQueue, Message 以及它们与Thread 之间的关系。可以用一个不太妥当的比喻来形容它们之间的关联:如果把 Thread 比作生产车间,那么 Looper 就是放在这车间里的生产线,这条生产线源源不断地从 MessageQueue 中获取材料 Messsage,并分发处理 Message (由于Message 通常是完备的,所以 Looper 大多数情况下只是调度让 Message 的 Handler 去处理 Message)。正是因为消息需要在 Looper 中处理,而 Looper 又需运行在 Thread 中,所以不能随随便便在非 UI 线程中进行 UI 操作。 UI 操作通常会通过投递消息来实现,只有往正确的 Looper 投递消息才能得到处理,对于 UI 来说,这个 Loop 阅读全文
公告
积分与排名
- 积分 - 249275
- 排名 - 4380
最新评论
- 1. Re:在 Asp.NET MVC 中使用 SignalR 实现推送功能
- @怪才博士 Install-Package Microsoft.AspNet.SignalR...
- --全部木大木大木大
- 2. Re:在 Asp.NET MVC 中使用 SignalR 实现推送功能
- @怪才博士 @怪才博士 Clients.All.addSomeMessage(clientName, message);...
- --全部木大木大木大
- 3. Re:在 Asp.NET MVC 中使用 SignalR 实现推送功能
- @Czhipu 兄弟你这个进不去...
- --全部木大木大木大
- 4. Re:[深入理解C++(二)]理解接口继承规则
- 好棒
- --Thor_one
- 5. Re:[深入浅出Cocoa]iOS网络编程之Socket
- 好文章,赞一个👍
- --“流离”