天天看點

第二章App架構設計與重構

response标準格式:

AnsyTask的缺點:

不能靈活控制其内部的線程池。

沒有暴露取消請求的方法,導緻任務隊列阻塞。

使用線程池+Runnable+Handler的方式:

将成功失敗的回調放在基類裡面,對公用的處理進行封裝,其實常用的網絡架構比如Volley,okHttp,Ansy_http_client都可以這樣去處理。如果有特殊情況,則可以通過重寫基類裡面的回調來進行特殊處理。還有就是加載網絡資料的對話框等也可以在基類通過方法來進行顯示,隐藏控制,比如在onBefore()裡面顯示,在onError()或者onFinish()以及onResponse()裡面講對話框進行隐藏。

App資料緩存:

這方面這本書應該講的是接口優化和網絡優化這方面的知識:

一個APP頁面的資料通過一個接口來進行傳回,沒必要設定多個接口來進行擷取。

進行傳回資料的緩存處理(隻針對[get]擷取的資料,不針對[post]修改資料)。當然在做緩存之前要考慮是否目前業務适合緩存,比如有些即時行要求比較高的操作或者頁面展示。

緩存位址一般選擇為sd卡緩存。

底層封裝的時候根據url作為key來判斷緩存是否存在,如果存在,傳回緩存資料,否則根據url去進行請求。

App自動登入功能實作:

不要本地儲存使用者名,密碼,或者如果要儲存,一定要進行加密來處理。

利用cookie(token)來作為使用者唯一性的标示。(我們項目就是這麼幹的)。

 使用者相關的,用cookie,無關的,伺服器可以控制無需校驗cookie。

登出功能,清除本地cookie(token)。

cookie過期處理,進入登入界面,傳回前面的頁面重新操作。(還是需要在底層回調的地方進行處理)

防止黑客刷庫:

利用驗證碼來進行防刷,如果同一IP頻繁通路同一接口,在登入界面有輸入驗證碼,或者彈出輸入驗證碼的浮窗。

時間校準 ,開啟Gzip壓縮:

更新本地時間和伺服器時間差的方法:

https://github.com/icodeu/AppProgrammingSource/blob/master/2.5.2%20%E6%97%B6%E9%97%B4%E6%A0%A1%E5%87%86/AndroidLib/src/com/infrastructure/net/HttpRequest.java