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方法