Android的两种事件处理方式:基于回调的事件处理和基于监听器的事件处理
监听:为界面组件绑定特定的事件监听器
在事件监听的处理模型中,主要涉及如下三类对象
Event Source(事件源):事件发性的场所,通常就是各个组件,
Event(事件):界面组件上发生的特定事情,
EventListener(事件监听器):负责监听事件源发生的事件,并对各种事件做出相应的响应;是事种委派式的事件处理方式。
在基于事件监听的处理模型中,事件监听器必须实现事件监听器接口(实现了特定接口的java类的实例),通常有如下几种形式:
A、内部类形式:将事件监听器类定义成当前类的内部类
B、外部类形式:将事件监听器类定义成一个外部类
C、ctivity 本身作为事件监听器类:让Activity本身实现监听器接口,并实现事件处理方法。
D、匿名内部类形式:使用匿名同类
基于回调机制的事件处理:事件源与事件监听器是统一的,事件监听器完全消失了,当用户在GUI组件上激发某个事件时,事件自己特定的方法将会负责处理该事件。主要采用继承GUI组件的方法。并重写该类的事件处理方法来实现。
以上两种方法,基于事件监听器的事件处理模型具有更大的优势,主要是分工明确,事件源,事件监听器分开实现,android系统中基于事件监听器会被优先处理。
响应的系统设置的事件
Configuration 类专门用于描述手机设备上的配置信息,包括用户特定的配置项,也包括系驻的动态设备配置。如果程序需要监听系统设置的更改,可重写Activity的onConfigurationChanged(ConfigurationnewConfig)方法,该方法是一个基于回调的事件处理方法,当系统调置发生改变时,该方法会被自动触发。
Handler消息传递机制
Android的UI操作不是线程安全的,为此Android的规则是只允许UI线程修改Activity里的UI组件。当一个程序第一次启动时,android会同时启动一个主线程(Main Thread)主要负责处理UI相关的事件(称UI线程)。Android的消息传递机制是另一种形式的“事件处理”,这种机制主要是为了解决android应用的多线程问题(新启动的线程如何修改操作UI),Handler类来处理。
Handler类的作用有2个
(1)在新启动的线程中发送消息
(2)在主线程中获取,处理消息。
处理流程:新启动的线程发送消息时,消息会发到与之前联的MessageQueue,而Handler会不断地从MessageQueue中获取关处理消息,这将到导致Handler类中处理消息的方法被调用。
不要在UI线程中执行一些耗时的操作。
AsyncTask 异步任务是一个抽象类,通常用于继承,需要指定三个参数:
AsyncTask<params,progress,Result>
Params :启动任务执行的输入参数类型
Progress:后台任务完成的进度值类型
Result:后台执行任务完成后返回结果类型
使用AsyncTask的三个步骤:
1 创建AsyncTask的子类,并指定三个参数。
2 重写方法
3 调用子类实例的execute方法