目录
Android 提供2种方式的事件处理:
基于回调的事件处理和基于监听的事件处理
基于监听的事件处理:
模型:委派式
事件源(Event Source)
事件(Event)
事件监听器(Event Listener)
步骤:
1.获取事件源,也就是被监听的组件
2.实现事件监听器类,实现XxxListener 接口
3.调用事件源的setXxxListener方法将事件监听器注册给事件源
事件:传递的事件信息比较复杂时,需要将事件对象进行封装
事件监听器:实现特定接口的实例
事件监听器的几种形式:
内部类形式
外部类形式
Activity本身作为事件监听器
Lambda表达式或匿名内部类(*最常用)
直接绑定到标签
基于回调的事件处理:
事件源和事件统一,事件源直接处理对应的事件
基于回调的事件传播:根据boolean类型的返回值进行判断,返回true,事件已完全处理,不会传播,返回false,事件未完全处理,继续传播
优先级:组件绑定的事件监听器——>组件的回调方法——>组件所在的Activity
回调:
1.定义回调函数(实现回调函数实例)
2.登记回调函数(作为条件参数)
3.触发了回调关联的事件(回调函数中的方法)
响应系统设置的事件:
Configuration类:用于描述手机上的配置信息
onConfigurationChanged方法:响应系统设置更改
消息传递:
Android 的UI操作不是线程安全的,为了解决这个问题,android规定:只允许UI线程修改Activity里的UI组件,其他线程想要修改UI组件,需要借助Handler 的消息传递机制来实现
Handler:
Handler的作用:
1.在新启动的线程中发送消息
2.在主线程中获取、处理消息
Handler一起工作的组件:
Message:Handler 接受和处理的消息对象
Looper:每个线程只能有一个Looper,其loop方法负责读取MessageQueue中的消息
MessageQueue:消息队列,采用先进先出的方式来管理Message
Message 机制总结:
1.Message 承载内容
2.MessageQueue 存放 Message
3.Looper 派发 Message
4.Handler 处理 Message
AsyncTask 异步任务
参考: