前言
我们为什么需要多线程机制?什么时候需要到多线程?
熟悉 Java 的你,对多线程编程一定不会陌生吧。当我们需要执行一些耗时操作,比如说发起一条网络请求时,考虑到网速等其他原因,服务器未必会立刻响应我们的请求,如果
不将这类操作放在子线程里去运行,就会导致主线程被阻塞住,从而影响用户对软件的正常 使用。那么就让我们从线程的基本用法开始学习吧1.线程的基本用法
1.1 继承thread 实现Runnable接口
2.在子线程中更新UI
Android中更新UI元素,必须在主线程中进行,否则就会出现异常
AsyncTask
3.解析异步消息处理机制
1. Message
Message 是在线程之间传递的消息,它可以在内部携带少量的信息,用于在不同线程之间交换数据。上一小节中我们使用到了 Message 的 what 字段,除此之外还可以使 用arg1和 arg2字段来携带一些整型数据,使用 obj字段携带一个 Object 对象2. Handler
Handler 顾名思义也就是处理者的意思,它主要是用于发送和处理消息的。发送消 息一般是使用 Handler 的 sendMessage()方法,而发出的消息经过一系列地辗转处理后,最终会传递到 Handler 的 handleMessage()方法中。
3. MessageQueue
MessageQueue 是消息队列的意思,它主要用于存放所有通过 Handler 发送的消息。这部分消息会一直存在于消息队列中,等待被处理。每个线程中只会有一个 MessageQueue对象。
4. Looper
Looper 是每个线程中的 MessageQueue 的管家,调用 Looper 的 loop()方法后,就会进入到一个无限循环当中,然后每当发现 MessageQueue 中存在一条消息,就会将它取出,并传递到 Handler 的 handleMessage()方法中。每个线程中也只会有一个 Looper 对象。 了解了 Message、Handler、MessageQueue 以及 Looper 的基本概念后,我们再来对异步