Android中的Handler

本文详细介绍了Android中Handler机制的工作原理及应用实例。通过创建Handler子类并重写handleMessage方法接收Message对象,结合Runnable对象实现线程间的通信,最终达到更新UI的目的。

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

 Handler 主要接受子线程发送的数据, 并用此数据配合主线程更新UI.

每一个Handler对象都维护着一个Handler队列,我们使用Handler对象的post方法把线程加入到我们的Handler队列中。加入到Handler队列中的线程对象会自动的执行。

我们还可以在线程中使用Handler对象的sendMessage方法发送Message对象,发送后,Handler对象的handleMessage方法会接收Message对象并处理。

下面就是一个使用Handler来改变控件按钮的例子;

public class Test extends Activity{
	private Button button;
	private Handler	handler;
	Runnable runnable=new Runnable(){//线程,用来加入到Handler队列来执行
		@Override
		public void run() {
			Message msg=new Message();
			Bundle bundle=new Bundle();
			bundle.putString("txt", "确定");
			msg.setData(bundle);
			handler.sendMessage(msg);//在Handler队列中执行线程的run方法的时候,发送Message对象。这个Message对象会触发handleMessage方法、			
		}	
	};
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.test);
		button=(Button)findViewById(R.id.button);
		handler=new Handler(){//生成一个Handler队列,并覆写接收Message对象的方法。
			public void handleMessage(Message msg) {
				super.handleMessage(msg);
				Bundle bundle=msg.getData();//接收Message
				String s=bundle.getString("txt");
				button.setText(s);//用接收到的Message完成Button的修改
			}			
		};
		button.setOnClickListener(new OnClickListener(){
			public void onClick(View v){
				handler.post(runnable);//把线程加入到Handler队列中
			}
		});
	}
}

总结一下这个过程:

(1)创建Handler的子类,并且在Handler子类中覆写handMessage方法用来接收并处理Message对象。

(2)创建Runnable对象的线程,这个线程可以完成我们所需要的异步操作,并使用sendMessage方法来反馈给Handler对象一个Message对象--会触发handMessage方法。

(3)把Runnable对象使用Handler的post方法加入到Handler队列中。加入后,Runnable对象会按照加入的先后顺序执行其run方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值