編輯:關於Android編程
上一篇(Android 設計隨便說說之簡單實踐(模塊劃分))例舉了應用商店設計來說明怎麼做模塊劃分。模塊劃分主要依賴於第一是業務需求,具體是怎麼樣的業務。應用商店則包括兩個業務,就是向用戶展示applist,和下載app。第二是運行環境,在Android平台,有androidsdk提供socket等API支持。因此將模塊大體換發了5個模塊。(當然了圖片加載可以額外提出,用開源組件去做,但是這裡為了說明如何設計,暫不提到。還有下載也可以利用開源組件)分別是如下:
模塊1 UI模塊,負責展示信息和用戶操作,主要類,RecommendActivity 負責數據展示和接受用戶操作。RecommendInterface,負責底層數據回調。(這裡只是舉例,下載的就不在提及)
這三個類之間的調用關系如下:(我的viso貌似沒有激活部分功能不能用只能口述了)
1 在RecommendActivity的onCreate裡面初始化RecommendInterface實例RecommendBase實例。並將RecommendInterface注入到RecommendBase裡面。
2 RecommendActivity隨後給RecommendBase發送指令調用getPageViewData等方法請求數據。
3 當用戶點擊下載。gotoDownLoadApp的是時候,RecommendBase開始調用startDownloadApp。
好了UI模塊的調用流程大體到這裡。
模塊2 調度模塊。負責整體業務調度。主要的類包括如下:
巨復雜。不過我們繼續理一下各個類調用的關系。
1 初始化該模塊就是初始化Controller。Controller初始化ControllerDownLoadAppInfosInterface, 和ControllerBase。Controller將ControlelrDownLoadAppInfosInterface注入到ControllerBase裡面。controllerBase初始化的時候初始化ControllerDownLoadAppInterface。
2 關鍵點,UI模塊如何和調度模塊交互。
2.1 RecommendBase裡面初始化Controller和ControllerUIInterface。並將RecommendInterface注入到ControlelrUiInterface裡面。
2.2 當RecommendActivity接收到用戶指令時,RecommendBase接收到指令調用Controller.而當異步的結果出來時,ControllerUIInterface 調用RecommendInterface。並且由RecommendInterface 將UI界面更新給用戶。(由此可見消息是從RecommendBase循環了一圈。)
3 頁面數據加載。Controller接收到RecommendBase來的指令後調用ControllerBase啟動加載模板和數據getViewDataByTempID。當底層獲取到Temp和Data的是時候,會通知到ControlelrDownLoadAppInfosInterface, 這個接口在回調Controller。 Controller調用CreateViewData。之後會調用ControllerUIInterface調用將數據給到UI。
還有下載過程。這裡就不在推演了。但是主要的是要看模塊間怎麼調用,也即是說怎麼合理組合。
會發現,上層業務和自己的依賴接口是一套全面的完整的業務。而調度層也是完成了一套完整的業務。
第三個模塊,數據解析模塊,負責網絡的applist數據和模板解析並組合。
關鍵點,如何和調度模塊交互
在調度層的ControllerBase裡面初始化該類DataWorkManager, 調度層有了模板和app數據後,調用setData,然後在調用getViewDataBytempId就可以或的模板數據。
也就是說,在調度層的依賴類裡面,初始化自己的接口,並且根據依賴類的方法來實現業務。
但是這個是一個業務單元,不能實現整體業務。
第四個模塊,網絡請求模塊。
關鍵點,如何和調度層交互。
首先在ControllerBase裡面初始化NetTaskManager和NetTaskResultListener。並且ControllerDownLoadAppinfosInterface注入到NetTaskResultListener。
然後開始調用downLoadTemplateById()。異步的,結果由NetTaskResultListener反饋給ControllerDownLoadAppinfosInterface。由ControllerDownLoadAppinfosInterface來處理這個消息。
模塊5 下載模塊,還需要說麼?我想不必了。
其實合理組合就看你在模塊之間如何調度了。模塊之所以提供接口,是因為第一,他的模塊不需要其他模塊所關心的。只要調用它的接口即可。第二,如果他的實現出現問題,問題解決也必然在這個模塊裡面。不會需要其他地方的修改。因此原則上無論模塊如何改變,但不允許接口改變。
每個模塊都有自己的依賴類,但是如果其他模塊有類似的實現,則提供的接口必然和前者模塊的依賴做出一個適配來實現無縫連接。上面的例子都是很簡單的。基本上沒有太多的需要依賴和接口之間的適配,但是實際工作中多著去了。
最後,很抱歉的說,上面的例子多有纰漏,很多地方只是說明說的很簡單,很粗糙,有冗余,甚至有錯。僅僅希望能有所獲益。
本文實例講述了Android編程實現圖片背景漸變切換與圖層疊加效果。分享給大家供大家參考,具體如下:本例要實現的目的:1.圖片背景漸變的切換,例如漸變的從紅色切換成綠色。
【Activity】 一個Activity是一個應用程序組件,提供一個屏幕,用戶可以用來交互為了完成某項任務,例如撥號、拍照、發送email、看地圖。每一個activi
目標 面向 Eclipse (ADT) 的 Android 插件現在支持基於 NDK 的應用開發。 其可自動生成項目和構件文件以及代碼存根,並可集成到整個 Andro
在研究如何實現Pushing功能期間,收集了很多關於Pushing的資料,其中有一個androidnp開源項目用的人比較多,但是由於長時間沒有什麼人去維護,聽說bug的幾