首页 > 代码库 > 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 int | arg1 | arg1 and arg2 are lower-cost alternatives to using setData() if you only need to store a few integer values. |
public int | arg2 | arg1 and arg2 are lower-cost alternatives to using setData() if you only need to store a few integer values. |
public Object | obj | An arbitrary object to send to the recipient. |
public Messenger | replyTo | Optional Messenger where replies to this message can be sent. |
public int | what | User-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中的异步处理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。