孫 軻
(電子科技大學成都學院,四川成都 610000)
作為手機快速崛起并且被越來越多的人廣泛使用的時代,手機相關(guān)程序的開發(fā)必然會越來越受到重視,無論是電腦的桌面應用還是手機的程序應用,面對更多的還是用戶,實現(xiàn)最多的是對于不同用戶動作的積極處理,也就是意味著需要對每一個用戶的動作進行積極響應,而對用戶積極響應的處理機制就是指對事件的處理。
在一個應用系統(tǒng)中,不同軟件模塊之間都會預留接口,按照調(diào)用方式的不同分為3個主要方面,分別是同步調(diào)用、回調(diào)以及異步調(diào)用。同步調(diào)用是一種阻塞式調(diào)用,調(diào)用方需等被調(diào)用方完成指令返回后才能繼續(xù)進行,在被調(diào)用方執(zhí)行指令期間,調(diào)用方處于被完全阻塞的狀態(tài);同步調(diào)用是一種單向調(diào)用,但是回調(diào)不同,回調(diào)是一種雙向調(diào)用模式,指被調(diào)用方在被調(diào)用的同時也能調(diào)用對方的接口,而異步調(diào)用指一種消息或者事件的發(fā)生機制,但與一般的消息或者事件機制的調(diào)用方向相反,位于接口的服務在收到消息或是發(fā)生某種事件后,會主動調(diào)用客戶方接口。軟件開發(fā)時,一般都會選擇回調(diào)與異步調(diào)用共同執(zhí)行完成任務,使用回調(diào)完成軟件開發(fā)過程中對異步消息的注冊,而使用異步調(diào)用實現(xiàn)對消息的通知,在這3類調(diào)用方式中,同步調(diào)用的程序與使用最為簡單,回調(diào)則可以認為是異步調(diào)用的基礎(chǔ)。
設(shè)計程序時,使用不同類型的程序語言、構(gòu)建平臺以及構(gòu)建框架,對于這些東西而言,不同的客戶端與服務端的交叉用到的絕對不僅僅是同步調(diào)用的方式,更多的還是異步調(diào)用,主要功能是讓接口提供方能在某些情況發(fā)生時主動通知客戶,我們所說的回調(diào),是能夠?qū)崿F(xiàn)一步消息模式的一個簡單途徑,所謂回調(diào),對于一般的程序設(shè)計語言來說,實現(xiàn)過程并不是很復雜,可以通過簡單的回調(diào)函數(shù)實現(xiàn),回調(diào)函數(shù)也是一個過程,但與其他面向?qū)ο蟮倪^程不同的是,主要還是能由調(diào)用方自己實現(xiàn)、然后反過來讓被調(diào)用方進行使用的一種特殊函數(shù),除此之外,如果程序語言是面向客戶的語言,那么其回調(diào)的實現(xiàn)一般通過接口或者抽象類函數(shù)來實現(xiàn),這種接口稱為回調(diào)類接口,這種對象稱為回調(diào)類對象。
以處理原理的不同為劃分依據(jù),Android系統(tǒng)的處理機制可分為2種,其中一種回調(diào)方法是把回調(diào)制作作為劃分依據(jù),另外一種則是以監(jiān)聽器接口為基礎(chǔ)。對于圖形用戶界面而言,基于回調(diào)機制的事件處理應用得更加廣泛,Android系統(tǒng)中每一個回調(diào)函數(shù)和接口,對事件的處理方法都不相同,開發(fā)人員可以根據(jù)實際情況對這些回調(diào)方法進行重寫,達到對事件影響的目的。如果某一事件沒有任何模塊對其進行處理,那么系統(tǒng)可能會對Activity中的回調(diào)方法進行調(diào)用,從而確保所有事件都處于被處理狀態(tài)。
是一種相對抽象的回調(diào)方法,該回調(diào)方法曾經(jīng)被接口KeyEvent.Callback使用,目前所有的View在使用過程中都能實現(xiàn)這種接口的編寫目的以及對這個方法進行重新編寫,這種回調(diào)方式主要用于手機鍵盤被按下時發(fā)生的事件的捕捉,這種方法來自于基于鍵盤的布爾參數(shù),參數(shù)中keyboard扮演的角色極為重要,其所指的是在參數(shù)輸入后轉(zhuǎn)換出的鍵值,即常說的鍵盤碼。在手機輸入中,每個按鈕對應的鍵盤碼都是唯一的,應用程序之間邏輯關(guān)系的獲得可以通過返回的鍵盤碼來實現(xiàn),通過對不同鍵盤碼的分析,可以了解用戶究竟按下了哪個鍵盤當中的鍵。參數(shù)event在整個回調(diào)過程中也是非常重要的,這個參數(shù)主要指的是按鍵事件的對象,這些對象包含的內(nèi)容非常多,如對某個事件的觸發(fā)方法以及觸發(fā)某一事件所需要的詳細信息等都是按鍵事件的對象。一般情況下,觸發(fā)事件所需要的信息主要包括事件的類型、狀態(tài)、發(fā)生事件等。onKeyDowm方法主要是在用戶按下按鍵時,系統(tǒng)自動將按鍵的信息以及希望對應完成的事件封裝成KeyEven對象的形式進行返回處理,使應用程序進一步被使用。這種形式返回值的參數(shù)類型是布爾類型,即如果返回值為true,代表這個事件已經(jīng)得到完整處理,如果返回值為false狀態(tài),則表示這個事件處理的還不夠完全,需要采用其他回調(diào)方式進行進一步處理,這種情況下考慮的方法主要為Activity中的回調(diào)方法。
與onKeyDowm方法異曲同工,這2種方法采用的都是接口KeyEvent.Callback曾使用過的抽象回調(diào)方法,并且目前所有的View使用時全都實現(xiàn)了這種接口的編寫目的以及對于這個方法進行了重新編寫,這個方法的出現(xiàn)主要是為了實現(xiàn)對手機鍵盤按鍵抬起的事件的捕捉。參數(shù)及返回值的意義與onKeyDowm方法比較類似。
與前面2種方法不同,這種方法在整個View大類中是一種對于方法的全新定義,而且整個大類中所有的子類都實現(xiàn)了對于這個方法的重寫,其主要含義是手機的應用程序能以這種方式為手段,使手機屏幕的觸摸事件可以被處理,主要是針對觸屏手機而言。這個過程涉及幾個參數(shù),首先是參數(shù)event,這個參數(shù)是指這個事件的對象,是作為手機屏幕觸摸事件封裝類的對象而存在的,這個參數(shù)中包括這個事件的所有必要信息,如觸摸位置、發(fā)生觸摸的時間以及類型等。用戶觸摸手機屏幕時,這個對象會被創(chuàng)建,然后對象的返回值返回,這種方式產(chǎn)生的返回值和鍵盤響應里的返回值基本相同,機制也基本相同,返回值為true,代表這個事件已經(jīng)得到完整的處理;返回值為false,則說明這個事件處理的還不夠完全,需要通過其他回調(diào)方法對其進行進一步處理。這個方法與鍵盤方法的主要區(qū)別在于這種方法不是單純的處理一種事件,而是可以多種事件一起進行處理,使用不同的動作值來進行區(qū)分。
這個方法的使用方式以及使用原理和前幾個回調(diào)方法基本類似,也可以在Activity以及View當中實現(xiàn)對于這個方法的重寫,下面主要介紹這幾個方法當中的參數(shù),首先是關(guān)于參數(shù)event,參數(shù)event是指對于手機軌跡球的封裝,這個參數(shù)能夠完成對手機軌跡球事件的封裝,像對觸發(fā)時間詳細信息的記錄、事件類型等都是事件封裝的主要內(nèi)容。在手機用戶對軌跡球進行操控時對象會被創(chuàng)建,首先需要了解一下軌跡球與鍵盤的差別,手機對于軌跡球的設(shè)計比鍵盤的存在更加美觀,可以加強用戶對手機的印象分,而且在部分使用觸摸屏的手機,某些型號的手機以及某些使用手機玩游戲的用戶而言,使用軌跡球比鍵盤方便很多,而且對應的軌跡也更加細化,還能進行更加精細的過程控制,相應的在進行控制時,后臺的狀態(tài)對應數(shù)值變化更加細致,甚至在模擬器運行時,使用軌跡球可以通過鼠標的控制進行軌跡球的運行狀態(tài)模擬,這類手機設(shè)計出的軌跡球比只具有手機鍵盤的美觀性更加突出,能給用戶更好的使用體驗。軌跡球的使用也比較簡單,如在某些游戲中通過軌跡球的使用可以使整個控制過程更加合理。與普通鍵盤相比,軌跡球細化程度更強,即在使用軌跡球時,后臺表示狀態(tài)的數(shù)值會呈現(xiàn)更細微、更精準的變化。在模擬器正常運行狀態(tài)下,用戶可以通過F6鍵打開模擬器中的軌跡球,然后可以通過鼠標的移動達到模擬軌跡球事件的目的。
與前面幾種方法不同的是,這種方法可以進行焦點改變,如果其中的某一個控件采用這種方法,就會在焦點改變時進行焦點改變事件的處理。
Android主要應用于手機操作系統(tǒng),所以必然要在手機上進行合理的正常運行,手機作為智能硬件,與計算機相比,計算及存儲能力都十分有限,所以并不適合用于大型的計算場合和辦公場合,而是作為客戶端軟件的載體,因為作為可以拿在手中的客戶端,手機可以充分發(fā)揮其攜帶方便以及易于交互的優(yōu)勢,可以隨時進行某個程序的運行,也可以隨時進行網(wǎng)絡(luò)訪問,實現(xiàn)網(wǎng)絡(luò)與服務器的交互。