崔娜
摘要:近幾年,移動(dòng)互聯(lián)在通信產(chǎn)業(yè)中異軍突起,使得搭載了移動(dòng)操作系統(tǒng)的智能手機(jī)迅速占領(lǐng)了市場。移動(dòng)設(shè)備的功能已不僅僅局限于通話,更成為了移動(dòng)終端接人了互聯(lián)網(wǎng)。Android平臺(tái)由于其開放性,迅速成為了主流的移動(dòng)智能系統(tǒng)。智能手機(jī)的快速普及,對(duì)優(yōu)質(zhì)移動(dòng)應(yīng)用程序的需求也越來越強(qiáng)烈。通過實(shí)際開發(fā)一款移動(dòng)應(yīng)用程序?yàn)槔芯緼ndroid平臺(tái)的核心架構(gòu)和關(guān)鍵技術(shù),解決常見問題、提高用戶體驗(yàn),最后對(duì)移動(dòng)互聯(lián)應(yīng)用產(chǎn)業(yè)的未來前景做了總結(jié)和展望。
關(guān)鍵詞:Android;移動(dòng)終端;系統(tǒng)開發(fā)
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)29-0038-02
1概述
智能移動(dòng)設(shè)備是互聯(lián)網(wǎng)與移動(dòng)通信相結(jié)合的產(chǎn)物,不僅可以進(jìn)行常規(guī)的通訊服務(wù),還可以接入互聯(lián)網(wǎng)即時(shí)查詢信息。在移動(dòng)智能操作系統(tǒng)領(lǐng)域中Android平臺(tái)占有極大的市場份額,通過搭載大量的移動(dòng)應(yīng)用程序,智能手機(jī)具備了極其強(qiáng)大的功能。由于Android平臺(tái)的開放性,在智能手機(jī)和平板電腦的市場中占有相當(dāng)大的份額。智能移動(dòng)終端的方便、快捷性,使得人們?cè)谝率匙⌒猩显絹碓揭蕾囍悄苁謾C(jī)。
2Android平臺(tái)的系統(tǒng)構(gòu)架
Android是一個(gè)開放的包含了眾多源代碼的軟件系統(tǒng)。它的系統(tǒng)構(gòu)架一共分為四個(gè)層次:第一層,主要包括Linux操作系統(tǒng)及應(yīng)用;第二層,主要包括本地代碼框架;第三層,包括JAVA框架,第四層,包括JAVA應(yīng)用程序。如圖1所示。
Linux使用第一層和第二層的分界線劃分系統(tǒng)內(nèi)外核空間。除第一層屬于內(nèi)核空間外,其它三層都為外核空間。在第二層和第三層之間的交界處放置本地框架和JAVA框架代碼的接口。由于第三層以下的系統(tǒng)框架內(nèi)容不可見,系統(tǒng)開發(fā)的過程主要針對(duì)第四層的系統(tǒng)API,第三層和第四層的交界處是API的接口。
3Android應(yīng)用程序開發(fā)的關(guān)鍵技術(shù)
3.1界面布局
開發(fā)人員需要通過設(shè)計(jì)和制作靜態(tài)界面將信息展示給用戶。視圖組件(view)、視圖容器(viewGroup)和布局管理(Lay-out)被稱為靜態(tài)界面三要素。
1)視圖組件(view)和視圖容器(viewGroup)
在移動(dòng)終端中所看到的應(yīng)用程序用戶界面是由View類和ViewGroup類組成的,View類構(gòu)成了UI組件的基礎(chǔ),可以對(duì)布局實(shí)現(xiàn)多種功能,如繪圖、焦點(diǎn)變換、用戶交互等。ViewGroup類View類的子類,可包含若干個(gè)UI組件。
2)布局管理(Layout)
在開發(fā)過程中,各個(gè)組件排列方式的組織和管理是通過布局管理(Layout)實(shí)現(xiàn)的,常見的布局有四種:線性布局、相對(duì)布局、表格布局和絕對(duì)布局。
3)事件處理機(jī)制
Android手機(jī)基本都配有觸摸屏,當(dāng)點(diǎn)擊屏幕上應(yīng)用程序的某一控件時(shí),控件會(huì)產(chǎn)生響應(yīng),事件處理機(jī)制在這里就發(fā)揮了作用。Android的事件處理機(jī)制沿用JAVA,包括三個(gè)事件模型:事件(Event)、事件源(Event Source)和事件監(jiān)聽器(Event Listener)。
3.2AsyncTask(異步執(zhí)行任務(wù))
AsyncTask(異步執(zhí)行任務(wù))可以簡化應(yīng)用程序執(zhí)行多任務(wù)時(shí)的過程,通過簡單的異步操作,不僅可以降低編程的難度,還可以帶來更好的用戶體驗(yàn)。它包含三種泛型類型參數(shù):Params(啟動(dòng)任務(wù)執(zhí)行的輸入?yún)?shù)),Progress(后臺(tái)任務(wù)執(zhí)行的進(jìn)度),Result(后臺(tái)計(jì)算結(jié)果的類型)。
3.3數(shù)據(jù)解析
Android客戶端需要先與數(shù)據(jù)庫進(jìn)行交互獲得數(shù)據(jù)后,才會(huì)在屏幕上動(dòng)態(tài)顯示用戶能看到的信息,目前常用的數(shù)據(jù)交互格式有兩種:XML(Extensible Markup Language)和JSON(JavaS-cript Object Notation)。開發(fā)者可根據(jù)他們各自的優(yōu)缺點(diǎn)加以取舍:(1)JSON較XML量級(jí)更輕,數(shù)據(jù)體積更?。唬?)JSON更易于與Script進(jìn)行交互;(3)XML對(duì)數(shù)據(jù)的描述更清晰且速度快于JSON。
4Android移動(dòng)終端應(yīng)用程序開發(fā)實(shí)例
下面以一款內(nèi)蒙古旅游手機(jī)應(yīng)用程序?yàn)槔瑢?shí)證Android平臺(tái)應(yīng)用程序開發(fā)過程。Android應(yīng)用程序的開發(fā)流程為:旅游部門進(jìn)行市場調(diào)研,確定市場需求,向軟件公司提出開發(fā)需求。軟件公司根據(jù)客戶需求初步開發(fā)出客戶端原型,與界面相關(guān)效果圖制成靜態(tài)客戶端交付旅游部門審核。審核通過后開始動(dòng)態(tài)部署應(yīng)用程序。接下來開發(fā)人員獲取服務(wù)器端的接口,確認(rèn)返回?cái)?shù)據(jù),再將返回的數(shù)據(jù)與客戶端界面鏈接,使得應(yīng)用程序頁面可以動(dòng)態(tài)顯示信息。開發(fā)完畢的應(yīng)用程序?qū)⑦M(jìn)入閉環(huán)測試流程,即測試人員對(duì)開發(fā)完成的應(yīng)用進(jìn)行測試,并將測試結(jié)果告知開發(fā)人員,開發(fā)人員要根據(jù)測試報(bào)告中指出的問題進(jìn)行進(jìn)一步修改,如此往復(fù)直到解決全部問題。軟件公司需要經(jīng)常與旅游部門進(jìn)行溝通,這種溝通將伴隨整個(gè)開發(fā)過程。當(dāng)旅游部門對(duì)軟件功能提出修改方案時(shí),應(yīng)及時(shí)反饋開發(fā)人員,實(shí)時(shí)調(diào)整客戶端。
如果說軟件的界面相當(dāng)于應(yīng)用的外觀(如圖2),那么軟件的架構(gòu)相當(dāng)于應(yīng)用的靈魂,如圖3所示。為了使移動(dòng)應(yīng)用程序能夠便于擴(kuò)展、易于操作、結(jié)構(gòu)簡明、邏輯清晰、定位明確、符合需求,搭建架構(gòu)是非常有必要的。旅游軟件設(shè)計(jì)內(nèi)容較多,所以頁面有較多層次,單頁內(nèi)容瑣碎,有大量數(shù)據(jù)需要從服務(wù)器端獲取。為了便于代碼的管理和重用,便于前期修改、優(yōu)化及后期維護(hù),為應(yīng)用程序設(shè)計(jì)項(xiàng)目架構(gòu)如圖所示。該項(xiàng)目架構(gòu)共分三層:顯示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層。顯示層作用于系統(tǒng)和顯示框架,提供交互式頁面;業(yè)務(wù)邏輯層主要為各種接口,用來傳遞和處理數(shù)據(jù);數(shù)據(jù)訪問層與數(shù)據(jù)庫服務(wù)器相連。實(shí)體集封裝自定義對(duì)象,用來做交互過程中的數(shù)據(jù)載體。此類三層架構(gòu)優(yōu)點(diǎn)顯著:1)具有很強(qiáng)的擴(kuò)展性,可根據(jù)客戶的調(diào)整需求,對(duì)應(yīng)修改相應(yīng)的方法;2)具有較高的安全性,數(shù)據(jù)調(diào)用只存在于相鄰層之間,不支持跨層調(diào)用;3)易于使用,操作簡單。
數(shù)據(jù)訪問層,應(yīng)用程序需要即時(shí)從服務(wù)器端獲取最新的信息,故網(wǎng)絡(luò)通信必不可少。這里采用的方式是將java.net通過Apache HTTP的客戶端組件HttpClient進(jìn)行封裝和抽象,以便于基于Android平臺(tái)的應(yīng)用開發(fā)。HttpClient在執(zhí)行HTTP時(shí),會(huì)被HTFP請(qǐng)求交互,請(qǐng)求的方式有g(shù)et方式和post方式。本旅游應(yīng)用向服務(wù)器請(qǐng)求響應(yīng)交互所使用的類為封裝了HttpClient的caller類,在編程過程中兩種方式都可以實(shí)現(xiàn),開發(fā)人員可以根據(jù)具體情況加以選擇。
業(yè)務(wù)邏輯層,全網(wǎng)絡(luò)使用ToursimGetApi類聲明應(yīng)用程序?qū)⒁玫降乃薪涌诜绞?。網(wǎng)絡(luò)接口類TourismGetApilmpl調(diào)用了網(wǎng)絡(luò)請(qǐng)求類Caller,并對(duì)TourismGetApi類聲明中的接口方式加以實(shí)現(xiàn)。
顯示層,在應(yīng)用程序的Activity中調(diào)用前文敘述的接口實(shí)現(xiàn)類中定義的方法,在客戶端上顯示從服務(wù)器上獲取的數(shù)據(jù),以達(dá)到動(dòng)態(tài)部署客戶端的目的。
5開發(fā)中的常見問題及解決辦法
5.1用戶體驗(yàn)
良好的用戶體驗(yàn)是一款優(yōu)秀的應(yīng)用程序必備的素質(zhì),由于Android設(shè)備種類繁多,Android系統(tǒng)版本也多種多樣,開發(fā)人員可以通過以下手段盡可能地提升用戶體驗(yàn)滿意度:
1)點(diǎn)擊區(qū)域的設(shè)置。通常應(yīng)用程序中有很多按鈕圖標(biāo),他們的大小和美觀程度直接影響用戶體驗(yàn),圖標(biāo)太大影響界面整體和諧性,太小又不方便用戶點(diǎn)擊,因此按鈕的設(shè)計(jì)非??简?yàn)開發(fā)者的設(shè)計(jì)功底。當(dāng)圖標(biāo)較小無法更改時(shí),可考慮適當(dāng)擴(kuò)大點(diǎn)擊區(qū)域,將實(shí)際的點(diǎn)擊響應(yīng)區(qū)域擴(kuò)大到按鈕的外部。
2)優(yōu)化速度。用戶體驗(yàn)的另一個(gè)重要指標(biāo)就是應(yīng)用程序運(yùn)行的流暢性。若不得不在程序運(yùn)行之初加載大量數(shù)據(jù),且需要一定時(shí)間,可在等待頁面中設(shè)計(jì)一個(gè)進(jìn)度條,并提示“拼命加載中,請(qǐng)稍候……”。在進(jìn)行大頁面跳轉(zhuǎn)或者網(wǎng)絡(luò)數(shù)據(jù)獲取的時(shí)候,都應(yīng)該加入這些設(shè)置。
3)用戶習(xí)慣。在應(yīng)用程序開發(fā)過程中還需要對(duì)用戶的習(xí)慣加以考慮,如導(dǎo)航條的位置通常置頂,個(gè)人信息和退出系統(tǒng)通常在系統(tǒng)菜單或設(shè)置頁面等等,力求讓用戶可以按照自己習(xí)慣的方式在最短的時(shí)間找到自己需要的功能。
5.2圖片緩存問題
多數(shù)應(yīng)用程序都是基于服務(wù)器的移動(dòng)客戶端,經(jīng)常需要遠(yuǎn)程獲取圖片。這類應(yīng)用只有通過展示大量圖片才能凸顯其特色。一般都是使用ListView組件,這個(gè)組件會(huì)通過用戶向下滑動(dòng)列表即時(shí)加載圖片,這就對(duì)圖片加載速度和網(wǎng)絡(luò)流量消耗提出了新的要求??梢允褂妙A(yù)先緩存圖片的方法提高加載速度。
6結(jié)束語
本文對(duì)Android系統(tǒng)的系統(tǒng)架構(gòu)和關(guān)鍵技術(shù)進(jìn)行了介紹,通過以一款內(nèi)蒙古旅游應(yīng)用程序?yàn)槔?,?shí)地討論了開發(fā)一款商業(yè)軟件的基本流程,最后闡述了開發(fā)中常見的問題及解決方案。隨著移動(dòng)互聯(lián)的日益發(fā)達(dá),人們的生活對(duì)互聯(lián)網(wǎng)和移動(dòng)設(shè)備的依賴越來越深。開發(fā)好的移動(dòng)應(yīng)用程序,不僅要熟練掌握編程的技巧和相關(guān)核心技術(shù),還應(yīng)從環(huán)境搭建、客戶需求、界面設(shè)計(jì)到應(yīng)用測試等多方面入手,面對(duì)遇到的問題應(yīng)具體分析,努力解決,以求達(dá)到最佳的用戶體驗(yàn)。