一種Android資料請求架構,android請求架構
大部分Android應用一般都涉及到跟伺服器的互動,除非是某些單機應用。既然要跟伺服器打交道,向伺服器請求資料幾乎是必做的事情,也許每家的APP都有一套自己的具體實現邏輯,但我們還是可以抽象出來一個通用的資料請求架構。
先:
我們來具體分析一下,首先豎直虛線左側是Android用戶端,右側是伺服器、後台資料庫。
左側圖中,3個灰色的模組就是Android中的MVC(詳細介紹請參考之前的一篇文字《Android中的MVC模式簡介》),其中Activity或Fragment充當了Controller的角色。接下來我們詳細介紹下具體的步驟:
1.在Android應用中,使用者一般都通過View來互動,比如點擊某個按鈕調用介面請求資料,或者對ListView進行下拉重新整理等,所以很多時候我們是通過View來告訴Controller需要請求資料,當然也有例外的情況,比如當載入某個Activity時就需要先請求資料,此時不需要第1步的通過View來觸發請求。
2.這一步比較簡單,就是向伺服器發送http請求,在Android應用中,一般都是通過http的方式來請求資料的,請求過程中附帶必要參數,為了防止ANR,此操作包或後續的3、4、5步都應當在子線程中實現。
3.伺服器向用戶端返回資料,通常就是輕量級的易傳輸的JSON格式,當然也有使用XML格式的。
4.用戶端拿到JSON格式的返回結果後,我們並不能直接使用,需要使用一個解析器Parser,把JSON資料解析成我們需要的資料模型,即得到Models。在這裡,如果是某些特殊的資料或者產品需求,可以對資料做緩衝處理,當網路異常或者下次不想連網請求資料時,我們可以直接從Cache中拿資料來使用。
5.當資料被解析成Models之後,Controller就可以使用它來更新視圖了,解析資料完成後,一般都會設定一種機制來通知Controller,方法有很多,比如Android的訊息機制。
6.最後一步是Controller使用Models中的資料來更新View,需要注意的是必須在UI線程來執行。
資料請求架構大概就是這樣,比較清楚的一個邏輯。我們請求的資料中不可避免地會有圖片資料,那麼圖片如何下載、如何做緩衝,又是一個很大的問題,在這裡先總結這個總體的資料請求架構,後續會總結一下關於圖片下載、緩衝、載入的架構。
對於在Android架構中增加service
照葫蘆畫瓢唄,你看看framework/base/services/java/com/android/server/下的例子。一般一個server由xxxxService.java xxxxManager.java IxxxxManager.aidl組成。Manager和aidl在frameworks/base/core/java/android/。如果是要系統啟動時就運行,則需要在SystemServer.java中加上啟動你的Service的代碼。
android C/S模式應用系統怎搭建架構?
我來簡單的說下,讓你容易理解:
1.系統物理架構
android用戶端------無線路由-------(web伺服器,資料庫)
2.技術選型
(android用戶端)--->Web伺服器(tomcat)--->資料庫(mysql等)
用戶端請求資料成功後,返回資料(可以通過Web Service、HTTP等方式進行網路通訊)
(android用戶端)<---Web伺服器(tomcat)<-->資料庫(mysql等)
3.建立用戶端項目WirelessClient(到時安裝在手機端)和伺服器項目WirelessServer(安裝在web伺服器端PC機)。之後分別開發這兩端的項目,手機端用android的API,伺服器端用Java開發
這樣可以協助你簡單的理解了嗎?