论Hander机制

本文深入浅出地解析了Android中的Handler机制,包括它的定义、功能、应用场景及其工作原理。Handler作为主线程与子线程间通信的重要工具,通过发送和处理消息实现异步操作。通过快递传送带的比喻,帮助初学者更好地理解这一复杂概念。文中强调了Handler的核心功能——发送消息和处理消息,并指出其主要用途在于避免主线程执行耗时操作导致的ANR异常。

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

简单说一下hander机制,这个Android基本必问的一道题!!!

面试过几个应聘者回答的都不是很好!


分条清晰回答,

1.Hander长什么样子,当然就是说它是一个什么,

2.Hander是干啥用的

3.列举一些应用场景

4.再加上形象的比喻分析其原理

平时给教的几个学生整天分析Java和Android知识,就是初学的理解不是很深刻么,就给他各种解释,常常比喻成现实中的实物,然后就很形象深刻的记住了。把一个很难的知识点尽量通俗化,白居易写诗让老太太都能看懂,这依然是好诗,易于传播,易于记忆就是好的么。讲着讲着就想起了初中课文上一篇说明文上列举的说明方法,只记得几个,举例子,下定义什么的后来百度查了一下。

举列子、作比较,下定义,作诠释,打比方(明喻,暗喻,借喻)、摹状貌,引资料,分类别,列数字,画图表,等等。

编程语言比较抽象,能把抽象的问题具体化,形象化,他们学起来就不害怕了。

Handler hander = new Handler(){
		@Override
		public void handleMessage(Message msg) {
			String data;
			super.handleMessage(msg);
			switch (msg.what) {
			case 101:// 河南
				data = (String) msg.obj;
				// 对数据进行处理,粘胶布,贴大字,放到车上去  (非耗时操作)
				break;
			case 102:// 北京
				data = (String) msg.obj;
				// 对数据进行处理,粘胶布,贴大字,放到车上去  (非耗时操作)
				break;
			case 103:// 广州
				data = (String) msg.obj;
				// 对数据进行处理,粘胶布,贴大字,放到车上去  (非耗时操作)
				break;
			default:
				break;
			}
		}
	};



	/**
	 * 发送北京河南的
	 * @param mypackage
	 */
	public void sendPackage(final String mypackage){
		new Thread(){
			@Override
			public void run() {
				super.run();
				Message msg = new Message();
				if (mypackage.equals("HeNan")) {
					msg.obj = "河南邮件";
					msg.what = 101;
				}else if(mypackage.equals("BeiJing")){
					msg.obj = "北京邮件";
					msg.what = 102;
				}
				hander.sendMessage(msg);
			}
			
		}.start();
	}
	/**
	 * 发送广州的
	 * @param mypackage
	 */
	public void sendGuangzhouComputer(final String mypackage){
		new Thread(){
			@Override
			public void run() {
				super.run();
				Message msg = new Message();
				msg.what = 103;
				msg.obj = "广州包裹";
				hander.sendMessage(msg);
			}
			
		}.start();
	}

当多个线程同时发送消息的时候,你也扔过来一箱,我也扔过来一箱,就是发送的有很多人,而处理的却要有条不紊依次去处理,所以这些货物要放在一个队列里面 Queue  然后呢由Looper 就是传送带,传送带一个死循环,一直看队列里面有消息没有,有了就网上运输,而Hander相当于招的快递处理员,及进行搬运发送邮件,也写大字处理邮件,然后分给各个货车,从而实现有序处理。


代码贴的比较少,但是我相信有点Android基础的仔细想想这个场景,一拍脑袋,恍然大悟。什么高深的Handler机制,也不过是快递传送带处理而已,原理相似。仔细理解之后就会很深刻。


那么来回答上面提出的四个问题!

什么是Handler呢,Handler他不是接口,也不是抽象类,是一个实实在在的实体里。

有啥功能?

1.发送消息sendMessage。

2.处理消息handlerMessage。

其他还有暂不关心这是最核心的两个功能

作用呢,就是解决主线程MainThread和子线程new Thread()之间的通信,

主线程不能执行耗时操作,超五秒就会ANR异常,就是手机无响应,所以耗时操作就放在子线程里面,

在子线程把大枣加工,夹核桃夹仁,或者花生,复杂的耗时处理,都扔子线程,处理完了。就利用Handler

即员工贴贴大字,放到车上这些不是很耗时的操作。

3.应用场景,就是



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值