一種多維度的web移動(dòng)終端的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
一種多維度的web移動(dòng)終端的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
一種多維度的web移動(dòng)終端的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

一種多維度的web移動(dòng)終端的設(shè)計(jì)與實(shí)現(xiàn)

1android團(tuán)隊(duì)android是谷歌開(kāi)發(fā)的基于linux平臺(tái)的移動(dòng)電話操作系統(tǒng)。該系統(tǒng)采用分層結(jié)構(gòu),由操作系統(tǒng)、中間組件、界面和應(yīng)用組成。Android團(tuán)隊(duì)向應(yīng)用開(kāi)發(fā)者提供豐富多樣的功能,諸如媒體播放、視音頻頻捕獲等,并將這些功能設(shè)計(jì)成由不同的Server負(fù)責(zé)管理。這樣應(yīng)用程序只需做為Client與這些Server建立連接便可以使用這些服務(wù),從而花很少的時(shí)間和精力就能開(kāi)發(fā)出令人眩目的功能?;谕ㄐ欧绞健鬏斝阅堋踩缘确矫娴目紤],進(jìn)程間通信采用了一套新的IPC機(jī)制———Binder。2inter通信模型與通信協(xié)議2.1任務(wù)系統(tǒng)b.c.平臺(tái)平臺(tái)Binder框架包括四個(gè)部分:Server、Client、ServiceManager以及驅(qū)動(dòng)。Binder驅(qū)動(dòng)提供標(biāo)準(zhǔn)文件操作如open()、mmap()、poll()、ioctl()等,以字符驅(qū)動(dòng)設(shè)備中的misc設(shè)備注冊(cè)在設(shè)備目錄/dev下,用戶可以通過(guò)/dev/binder訪問(wèn)它,它負(fù)責(zé)建立進(jìn)程之間Binder通信,在進(jìn)程之間傳遞Binder,管理Binder引用計(jì)數(shù),傳遞和交互進(jìn)程之間數(shù)據(jù)包等一系列底層支持。而ServiceManager是一個(gè)守護(hù)進(jìn)程,它的作用是使Client能夠通過(guò)Binder中注冊(cè)的Server名字獲得對(duì)Server實(shí)體的引用。從一個(gè)用戶的角度來(lái)看進(jìn)程A調(diào)用進(jìn)程B的服務(wù)過(guò)程,就是Server通過(guò)注冊(cè)將服務(wù)交由ServiceManager管理,而Client通過(guò)ServiceManager獲得該服務(wù)的Binder引用,然后調(diào)用Binder引用的方法來(lái)實(shí)現(xiàn)調(diào)用服務(wù)。用戶看到的是ServiceManager來(lái)實(shí)現(xiàn)通訊,而無(wú)法看到驅(qū)動(dòng)在這一過(guò)程中所起的作用,Binder實(shí)現(xiàn)進(jìn)程之間通訊的細(xì)節(jié)被屏蔽了,對(duì)用戶而言是透明的。但是Binder框架的真正核心就是Binder驅(qū)動(dòng),相關(guān)的兩個(gè)需要通訊的進(jìn)程,它們通過(guò)ServiceManager調(diào)用libutil.so庫(kù)來(lái)實(shí)現(xiàn)通訊,而libutil.so是通過(guò)Binder驅(qū)動(dòng)讀寫內(nèi)核空間中的一塊共享內(nèi)存來(lái)實(shí)現(xiàn)這一過(guò)程。Binder通信模型如圖1所示。2.2主要功能接口設(shè)計(jì)Binder驅(qū)動(dòng)和應(yīng)用程序之間定義了一套接口協(xié)議,主要功能由ioctl()接口實(shí)現(xiàn)。協(xié)議基本格式是(命令+數(shù)據(jù)),使用ioctl(fd,cmd,arg)函數(shù)實(shí)現(xiàn)交互。參數(shù)cmd表示命令,參數(shù)arg表示數(shù)據(jù)。3binder機(jī)制的簡(jiǎn)單示例3.1信息遠(yuǎn)程服務(wù)一個(gè)應(yīng)用的Service提供Book詳細(xì)信息的遠(yuǎn)程服務(wù),作為服務(wù)端,另外一個(gè)應(yīng)用中的Activity想獲取Book信息。Android的數(shù)據(jù)傳遞采用Aidl的方式。3.2android平臺(tái)研究Android的不同應(yīng)用不能共用數(shù)據(jù),因此如果有需要的話只能通過(guò)進(jìn)程間通訊來(lái)完成應(yīng)用共享數(shù)據(jù)。進(jìn)程間通訊(ipc)涉及到三個(gè)部分:客戶端(調(diào)用方),傳遞數(shù)據(jù),服務(wù)端(被調(diào)用方)。其中服務(wù)端Service被同一個(gè)應(yīng)用調(diào)用和不同應(yīng)用調(diào)用原理是不同的,因此分成以下兩種:(1)本地服務(wù)(LocalService):Service被同一個(gè)應(yīng)用中的Activity調(diào)用,用于實(shí)現(xiàn)應(yīng)用程序自己的一些耗時(shí)任務(wù)。(2)遠(yuǎn)程服務(wù)(RemoteSercie):可以被其他應(yīng)用程序復(fù)用,比如WiFi服務(wù),其他應(yīng)用程序不需要再寫這樣的服務(wù),調(diào)用已有的即可。Android的數(shù)據(jù)傳遞采用Aidl的方式,考慮到效率的原因,沒(méi)有用Java內(nèi)置的Serializable,而是采用原始數(shù)據(jù)拆分組裝的Parcel方式。根據(jù)上邊相關(guān)知識(shí)的講解可知,該場(chǎng)景中Service即服務(wù)端提供遠(yuǎn)程服務(wù),activity即客戶端調(diào)用Service提供的服務(wù),Book即要傳輸?shù)臄?shù)據(jù)需要采用parcel方式構(gòu)建。3.3創(chuàng)建閱讀器文件1)創(chuàng)建一個(gè)Android工程,代碼包名com.example.binderserver2)定義傳輸?shù)膶?duì)象Book,實(shí)現(xiàn)Parcelable接口,Book屬性有:bookName、bookPrice,Book的行為方式有:屬性相關(guān)的getter和setter方法、空構(gòu)造方法及有參構(gòu)造方法,有參構(gòu)造方法內(nèi)容如下:3)創(chuàng)建Book對(duì)應(yīng)的aidl文件,定義文件名為Book.aidl,內(nèi)容為:parcelableBook;4)創(chuàng)建IBinderServerService.aidl文件,在文件中將IBinderServerService定義為接口,內(nèi)容是服務(wù)端提供的服務(wù)———沒(méi)有實(shí)現(xiàn)的兩個(gè)方法sayHello()和sayHello()5)定義一個(gè)繼承了Service的類文件BinderServerService,在該類中必須定義一個(gè)IBinderServerService.Stub類型的私有屬性mBinder,并在onBind方法中返回該私有屬性mBinder,mBinder主要是用來(lái)實(shí)現(xiàn)服務(wù)端定義的兩個(gè)方法,mBinder的定義如下所示:6)在AndroidManifest.xml中注冊(cè)服務(wù)AidlServerService:7)工程名上右鍵Runas->啟動(dòng)應(yīng)用Binder_Server,等待客戶端的調(diào)用。3.4出入數(shù)字視頻文件la1)創(chuàng)建一個(gè)Android工程,代碼包名com.example.binderclient,并將服務(wù)端的代碼包拷貝過(guò)來(lái),保留com.examplebinder.server中的文件Book.java、Bookaidl、IBinderServerService.aidl,其余刪除。2)Layout設(shè)計(jì)。在布局文件中放置一個(gè)按鈕和三個(gè)TextView,按鈕用于觸發(fā)請(qǐng)求,TextView分別用于顯示歡迎信息、圖書名稱及圖書價(jià)格。3)服務(wù)調(diào)用。在代碼中為按鈕添加onClick事件,事件發(fā)生時(shí)執(zhí)行的代碼如下:然后在Activity中定義ServiceConnection類型的私有屬性mConnection,mConnection的定義如下:4)啟動(dòng)客戶端應(yīng)用,點(diǎn)擊按鈕,Book信息會(huì)展示在TextView組件中。4id系統(tǒng)定制工作的幫助在Android系統(tǒng)中,大量的使用了Binder機(jī)制。了解Binder機(jī)制可以對(duì)應(yīng)用程序開(kāi)發(fā)以及Android系統(tǒng)定制工作提供很大的幫助。目前,國(guó)內(nèi)Andr

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論