孙 轲
(电子科技大学成都学院,四川成都 610000)
作为手机快速崛起并且被越来越多的人广泛使用的时代,手机相关程序的开发必然会越来越受到重视,无论是电脑的桌面应用还是手机的程序应用,面对更多的还是用户,实现最多的是对于不同用户动作的积极处理,也就是意味着需要对每一个用户的动作进行积极响应,而对用户积极响应的处理机制就是指对事件的处理。
在一个应用系统中,不同软件模块之间都会预留接口,按照调用方式的不同分为3个主要方面,分别是同步调用、回调以及异步调用。同步调用是一种阻塞式调用,调用方需等被调用方完成指令返回后才能继续进行,在被调用方执行指令期间,调用方处于被完全阻塞的状态;同步调用是一种单向调用,但是回调不同,回调是一种双向调用模式,指被调用方在被调用的同时也能调用对方的接口,而异步调用指一种消息或者事件的发生机制,但与一般的消息或者事件机制的调用方向相反,位于接口的服务在收到消息或是发生某种事件后,会主动调用客户方接口。软件开发时,一般都会选择回调与异步调用共同执行完成任务,使用回调完成软件开发过程中对异步消息的注册,而使用异步调用实现对消息的通知,在这3类调用方式中,同步调用的程序与使用最为简单,回调则可以认为是异步调用的基础。
设计程序时,使用不同类型的程序语言、构建平台以及构建框架,对于这些东西而言,不同的客户端与服务端的交叉用到的绝对不仅仅是同步调用的方式,更多的还是异步调用,主要功能是让接口提供方能在某些情况发生时主动通知客户,我们所说的回调,是能够实现一步消息模式的一个简单途径,所谓回调,对于一般的程序设计语言来说,实现过程并不是很复杂,可以通过简单的回调函数实现,回调函数也是一个过程,但与其他面向对象的过程不同的是,主要还是能由调用方自己实现、然后反过来让被调用方进行使用的一种特殊函数,除此之外,如果程序语言是面向客户的语言,那么其回调的实现一般通过接口或者抽象类函数来实现,这种接口称为回调类接口,这种对象称为回调类对象。
以处理原理的不同为划分依据,Android系统的处理机制可分为2种,其中一种回调方法是把回调制作作为划分依据,另外一种则是以监听器接口为基础。对于图形用户界面而言,基于回调机制的事件处理应用得更加广泛,Android系统中每一个回调函数和接口,对事件的处理方法都不相同,开发人员可以根据实际情况对这些回调方法进行重写,达到对事件影响的目的。如果某一事件没有任何模块对其进行处理,那么系统可能会对Activity中的回调方法进行调用,从而确保所有事件都处于被处理状态。
是一种相对抽象的回调方法,该回调方法曾经被接口KeyEvent.Callback使用,目前所有的View在使用过程中都能实现这种接口的编写目的以及对这个方法进行重新编写,这种回调方式主要用于手机键盘被按下时发生的事件的捕捉,这种方法来自于基于键盘的布尔参数,参数中keyboard扮演的角色极为重要,其所指的是在参数输入后转换出的键值,即常说的键盘码。在手机输入中,每个按钮对应的键盘码都是唯一的,应用程序之间逻辑关系的获得可以通过返回的键盘码来实现,通过对不同键盘码的分析,可以了解用户究竟按下了哪个键盘当中的键。参数event在整个回调过程中也是非常重要的,这个参数主要指的是按键事件的对象,这些对象包含的内容非常多,如对某个事件的触发方法以及触发某一事件所需要的详细信息等都是按键事件的对象。一般情况下,触发事件所需要的信息主要包括事件的类型、状态、发生事件等。onKeyDowm方法主要是在用户按下按键时,系统自动将按键的信息以及希望对应完成的事件封装成KeyEven对象的形式进行返回处理,使应用程序进一步被使用。这种形式返回值的参数类型是布尔类型,即如果返回值为true,代表这个事件已经得到完整处理,如果返回值为false状态,则表示这个事件处理的还不够完全,需要采用其他回调方式进行进一步处理,这种情况下考虑的方法主要为Activity中的回调方法。
与onKeyDowm方法异曲同工,这2种方法采用的都是接口KeyEvent.Callback曾使用过的抽象回调方法,并且目前所有的View使用时全都实现了这种接口的编写目的以及对于这个方法进行了重新编写,这个方法的出现主要是为了实现对手机键盘按键抬起的事件的捕捉。参数及返回值的意义与onKeyDowm方法比较类似。
与前面2种方法不同,这种方法在整个View大类中是一种对于方法的全新定义,而且整个大类中所有的子类都实现了对于这个方法的重写,其主要含义是手机的应用程序能以这种方式为手段,使手机屏幕的触摸事件可以被处理,主要是针对触屏手机而言。这个过程涉及几个参数,首先是参数event,这个参数是指这个事件的对象,是作为手机屏幕触摸事件封装类的对象而存在的,这个参数中包括这个事件的所有必要信息,如触摸位置、发生触摸的时间以及类型等。用户触摸手机屏幕时,这个对象会被创建,然后对象的返回值返回,这种方式产生的返回值和键盘响应里的返回值基本相同,机制也基本相同,返回值为true,代表这个事件已经得到完整的处理;返回值为false,则说明这个事件处理的还不够完全,需要通过其他回调方法对其进行进一步处理。这个方法与键盘方法的主要区别在于这种方法不是单纯的处理一种事件,而是可以多种事件一起进行处理,使用不同的动作值来进行区分。
这个方法的使用方式以及使用原理和前几个回调方法基本类似,也可以在Activity以及View当中实现对于这个方法的重写,下面主要介绍这几个方法当中的参数,首先是关于参数event,参数event是指对于手机轨迹球的封装,这个参数能够完成对手机轨迹球事件的封装,像对触发时间详细信息的记录、事件类型等都是事件封装的主要内容。在手机用户对轨迹球进行操控时对象会被创建,首先需要了解一下轨迹球与键盘的差别,手机对于轨迹球的设计比键盘的存在更加美观,可以加强用户对手机的印象分,而且在部分使用触摸屏的手机,某些型号的手机以及某些使用手机玩游戏的用户而言,使用轨迹球比键盘方便很多,而且对应的轨迹也更加细化,还能进行更加精细的过程控制,相应的在进行控制时,后台的状态对应数值变化更加细致,甚至在模拟器运行时,使用轨迹球可以通过鼠标的控制进行轨迹球的运行状态模拟,这类手机设计出的轨迹球比只具有手机键盘的美观性更加突出,能给用户更好的使用体验。轨迹球的使用也比较简单,如在某些游戏中通过轨迹球的使用可以使整个控制过程更加合理。与普通键盘相比,轨迹球细化程度更强,即在使用轨迹球时,后台表示状态的数值会呈现更细微、更精准的变化。在模拟器正常运行状态下,用户可以通过F6键打开模拟器中的轨迹球,然后可以通过鼠标的移动达到模拟轨迹球事件的目的。
与前面几种方法不同的是,这种方法可以进行焦点改变,如果其中的某一个控件采用这种方法,就会在焦点改变时进行焦点改变事件的处理。
Android主要应用于手机操作系统,所以必然要在手机上进行合理的正常运行,手机作为智能硬件,与计算机相比,计算及存储能力都十分有限,所以并不适合用于大型的计算场合和办公场合,而是作为客户端软件的载体,因为作为可以拿在手中的客户端,手机可以充分发挥其携带方便以及易于交互的优势,可以随时进行某个程序的运行,也可以随时进行网络访问,实现网络与服务器的交互。