iT邦幫忙

DAY 15
1

Android 實現智慧生活 DIY系列 第 15

實現智慧家庭diy (Day15) – 實現智慧家庭雲的服務引擎 之 架構剖析 - (中)

高度抽換性的系統設計



圖 ㄧ

Service 與其子類 + Binder 與其子類是引擎,接在myJigbeeAdapter 後面的JigbeeAppData則是輪子。
使用者介面所在的Activity、推動整個機制的引擎,與輪子,彼此間應保持獨立,要抽換任一個,都不會影響其餘兩個,使之具有高度抽換性。:
接下來看看,引擎如何運轉。

所有文章
http://ithelp.ithome.com.tw/category/家庭雲

圖 二
上圖二紅色框內程式區塊獨立於所有Activity函式,所以一開始會產生一個ServiceConnection的物件,將這參考值儲存在 mConnection。而上圖二綠色框內是位於 Actuvity ac01 的onCreate()函式,bindService()的呼叫,會產生誕生一個Intent物件,並與剛剛產生的ServiceConnection物件的參考(就是mConnection)一併送給Android 系統,Android 會依此Intent的參數 com.google.android.ZigbeeApp.REMOTE_SERVICE (這在我昨天的PO文第一張圖裏)找出 適合的Service之後,參考下面圖三與圖四Android 會呼叫 Service內的onBind(),而獲得IBinder 的參考值。


圖 三

圖 四

Android 會拿這IBinder的參考值,當參數呼叫 上圖二紅色框內ac01內的onServiceConnection(),如此便把 IBinder 參考傳遞給 ac01(就是上圖二紅色框內 ib 是宣告在ac01 型態爲iBinder的變數) 。參考圖三, 當 ac01 取得IBinder的參考後,便能以 IBinder的參考變數(ib)呼叫 Binders內的transact() ,進而呼叫到myJigbeeAdapter 內的onTransact(),而onTransact() 函式就會呼叫 Class JigbeeAppData內的成員函式getAppDate()了,來操作 Zigbee 的資料了,如圖五。


圖五

所有文章
http://ithelp.ithome.com.tw/category/家庭雲


上一篇
實現智慧家庭diy (Day14) – 實現智慧家庭雲的服務引擎 之 架構剖析 - (上)
下一篇
實現智慧家庭diy (Day16) –框架是號制系統,作業流程則是交通規則。
系列文
Android 實現智慧生活 DIY30

尚未有邦友留言

立即登入留言