Android Handler机制

最近没事干又看了看Handler的机制,做一个大概的阐述。

对于初学者来说会用才是他们的当务之急,但是你要拜托菜鸟的帽子就必须深挖底层的东西。

先看看我们一般是咋用的:

private Thread mThread;
private Handler mHandler = new Handler(){
		
		public void handleMessage(android.os.Message msg) {
			
			switch (msg.what) {
			case 1:
				// do your thing;
				break;

			default:
				break;
			}
			
		};
		
	};
	
	public void startTask(){
		
		new Thread(){
			
			@Override
			public void run() {
				
				Message msg = mHandler.obtainMessage();
				msg.what = 1;
				msg.arg1 = 2;
				mHandler.sendMessage(msg);
			}http://blog.youkuaiyun.com/jackchen95/article/details/13631761
			
		}.start();
	}

这这几行的代码,有很牛逼的机制。

看看源码才知道是这样的:

首先从表面上理解这样几个概念:Message(消息)   MessageQueue(消息队列)  Looper(循环)  Handler

他们是怎样协调工作的呢。

大概是这样的,在主线程中有且只有一个Looper循环,Looper中维护着一个MessageQueue(消息队列),Handler从消息池中得到一个Message对象,Handler将消息发送出去之后MessageQueue就会接收到这个Message对象,Looper发现自己的消息队列中有消息的话就会执行:

看最后一行,这是一个死循环,msg.targert是Handler的实例,并且这个Handler就是mHandler,也就是mHandler.obtainMessage();

这个Handler,你使用mHandler.obtainMessage()得到的消息,消息在被处理的时候还是mHandler,应为Message中有一个成员变量

Handler target。

大致就是这样:

http://blog.youkuaiyun.com/jackchen95/article/details/13631761






http://blog.youkuaiyun.com/jackchen95/article/details/13631761(参考)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值