【Android笔记】消息机制

本文详细介绍了Android中消息机制及Handler类的使用,包括常用属性、消息机制原理和Handler类常用API。通过实例展示了如何从工作线程向主线程发送不同消息,并在主线程中接收和处理这些消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(written in  2012-06-29 01:22:46


Message

用于存放消息,通常与Handler类配合使用。

常用属性

arg1

int

arg2

int

what

int

obj

Object

例:

Message msg = new Message();
msg.what = 1;
msg.arg1 = 100;
msg.obj = "hello";
msg.obj = new Runnable();


 

消息机制原理



Handler

常用API

sendEmptyMessage(int what)

从工作线程向主线程发送一个空消息

sendEmptyMessage(int what,long uptime)

uptime为指定时间

sendEmptyMessageDelayed(int what,long delay)

延时发送空消息

sendMessage(Message msg)

向主线程发送消息

sendMessageAtTime(Message msg,long delay)

按指定时间向主线程发送消息

sendMessageDelayed(Message msg,long delay)

延迟指定时间向主线程发送消息

handleMessage(Message msg)

接收并处理从工作线程发送来的消息

例:从两个工作线程向主线程发送不同的消息,主线程接受消息并显示不同的处理处理信息。

MainAct.java

public void onClick(View v){
switch(v.getId()){
case R.id.btnDownload:
new Thread(){
public void run(){
CommonUtils.timeConsuming(10);
Message msg = new Message();
msg.what = CommonUtils.FLAG_DOWNLOAD;
msg.obj = "donwload finished";
mHandleer.sendMessage(msg);
};
}.start();
break;
case R.id.btnUpdate:
new Thread(){
public void run(){
CommonUtils.timeConsuming(8);
Message msg = new Message();
msg.what = CommonUtils.FLAG_UPDATE;
msg.obj = "update finished";
mHandler.sendMessage(msg);
};
}.start();
break;
}
}


activityonCtreate()中创建Handler对象mHandler

Button btnDownload.setOnClickListener(this);
Button btnUpdate.setOnClickListener(this);
mHandler = new Handler(){
public void handleMessage(Message msg){
switch(msg.what){
case CommonUtils.FLAG_DOWNLOAD:
mTextView.setText("下载结束");
break;
case CommonUtils.FLAG_UPDATE:
mTextView.setText("更新结束");
}
}
};


CommonUtils.java

public static final int FLAG_DOWNLOAD=1;
public static final int FLAG_UPDATE=2;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值