孫 軻
(電子科技大學成都學院,四川成都 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主要應用于手機操作系統,所以必然要在手機上進行合理的正常運行,手機作為智能硬件,與計算機相比,計算及存儲能力都十分有限,所以并不適合用于大型的計算場合和辦公場合,而是作為客戶端軟件的載體,因為作為可以拿在手中的客戶端,手機可以充分發揮其攜帶方便以及易于交互的優勢,可以隨時進行某個程序的運行,也可以隨時進行網絡訪問,實現網絡與服務器的交互。