首页 > 代码库 > Android中的异步处理

Android中的异步处理

主要有Message,Handler,MessageQueue,Loop:

1.Message 和Handler配合使用:

Message message = new Message();message.what = UPDATE_TEXT;handler.sendMessage(message); // 将Message对象发送出去

  

private Handler handler = new Handler() {public void handleMessage(Message msg) {switch (msg.what) {case UPDATE_TEXT:// 在这里可以进行UI操作text.setText("Nice to meet you");break;default:break;}}};

  Message所有的成员有

public intarg1arg1 and arg2 are lower-cost alternatives to using setData() if you only need to store a few integer values.
public intarg2arg1 and arg2 are lower-cost alternatives to using setData() if you only need to store a few integer values.
public ObjectobjAn arbitrary object to send to the recipient.
public MessengerreplyToOptional Messenger where replies to this message can be sent.
public intwhatUser-defined message code so that the recipient can identify what this message is about.

Message 是在线程之间传递的消息,它可以在内部携带少量的信息,用于在不同线
程之间交换数据。上一小节中我们使用到了 Message 的 what 字段,除此之外还可以使
用 arg1 和 arg2 字段来携带一些整型数据,使用 obj 字段携带一个 Object 对象。
要携带更多数据,可以使用setData(Bundle).

2 Handler

Handler 顾名思义也就是处理者的意思,它主要是用于发送和处理消息的。发送消
息一般是使用 Handler 的 sendMessage()方法,而发出的消息经过一系列地辗转处理后,
最终会传递到 Handler 的 handleMessage()方法中。
3 MessageQueue

MessageQueue 是消息队列的意思,它主要用于存放所有通过 Handler 发送的消息。
这部分消息会一直存在于消息队列中,等待被处理。每个线程中只会有一个 MessageQueue
对象。
4 Loop

Looper 是每个线程中的 MessageQueue 的管家,调用 Looper 的 loop()方法后,就会
进入到一个无限循环当中,然后每当发现 MessageQueue 中存在一条消息,就会将它取
出,并传递到 Handler 的 handleMessage()方法中。每个线程中也只会有一个 Looper 对象。

Android中的异步处理