Android應用框架需要做的事情
一、網絡框架
1.轉換實體
通常API接口的返回值是Jason數據類型的,網絡框架幫助我們將其轉換為Entity。
2.提供回調
網絡請求結束后應調用回調方法,至少有success和failed兩種不同的回調,還要能夠根據不同業務需求擴展出其它類型。還要注意兩種不同的使用場景:與用戶界面相關的請求和與界面無關的請求。前者可能需要框架根據用戶界面的顯示狀態控制網絡請求。例如在請求未收到服務端響應時用戶關閉界面,此時框架應當將網絡請求標記為取消,既節省資源又能防止回調時因用戶界面已銷毀造成異常。而與用戶界面無關的網絡請求更易于復用。
因此需要為不同類型的網絡請求分別提供回調接口。
3.控制用戶界面的展示狀態
頁面信息未獲取到的時候展示加載狀態,請求回調成功后取消加載狀態,如果請求失敗展示錯誤狀態,并提供用戶重試請求的邏輯。如果能框架夠很好的控制這些狀態就避免許多網絡請求成功卻無法展示界面這樣的問題。
應用進行提交信息的網絡請求時需要在界面上展示上傳中的浮層,防止用戶重復點擊或進行其它操作。
4.文件上傳工具
圖片上傳是經常執行的操作,通常需要支持批量上傳、斷點續傳并且提供上傳狀態的回調。上傳過程中可能需要在用戶界面展示進度提示。
二、應用界面框架
1.提供不同狀態的展示
應用中通常需要有正在加載、請求失敗、數據為空三種特殊狀態的界面。頁面展示狀態受網絡連接和應用邏輯的控制。狀態應能主動設置,同時對通用的情形應該與網絡框架配合處理。
2.列表頁面
Adapter+ViewHolder;列表樣式和點擊效果;下拉刷新上拉加載;Item固頂效果;
3.提示工具
提示框;Toast;Loading提示;
4.瀏覽器
基本的界面展示;能處理跳轉到源生頁面;
5.重復點擊處理
短時間內多次點擊一個View時可能會重復開啟界面、重復調用接口造成邏輯錯誤。為了避免因用戶手抖引發的錯誤,框架最好能夠提供通用的解決方案。但要注意避免引起按鈕點擊無響應這樣更嚴重的問題。
6.常用的界面工具
1.時間選擇器
可以根據業務需要組合選擇年月日,可以設置起始和截止日期,能夠自定義界面樣式。
2.各種形狀的ImageView
可選擇邊框,常見的有圓形、圓角矩形、正方形。
3.禁止滾動的ListView
配合ScrollView使用,用于一些布局復雜的頁面。
4.橫向ListView
有時需要這種布局展示。
5.流式布局FlowView
常配合標簽使用,雖然不是系統提供的ViewGroup但是在應用中使用非常廣泛。
三、錯誤處理
每個應用都應該有一個CrashHandler,基礎的處理有錯誤記錄和異常上報。還可以做成自動重開當前錯誤頁面,避免Crash。當多次啟動連續Crash時采取清除本地數據或更新應用等處理方式。
四、應用界面棧管理
雖然Android系統有Activity Stack,但它對用戶空間并不開放。有時我們需要有全局的入口獲取當前展示的Activity。或是將所有Activity出棧,只展示應用首頁。框架需要提供工具類
五、線程管理
應用中經常有一些邏輯需要放在線程中處理,如果沒有統一線程池可能造成開發人員隨手創建一個線程,沒有及時關閉,效率低下容易出錯并且影響性能。因此框架應提供公用線程池,可滿足不同優先級的線程運行,支持定時任務。
以上是本人在開發中總結出的Android應用開發框架應提供的功能。一個完善的應用框架能夠提升開發效率,增強應用的穩定性。但在實際項目中,由于種種原因,框架可能不夠完善,或是不得不做出一些妥協。思考什么樣的框架適合你的項目,看看還有什么不足然后試著完善它。
來自:http://www.jianshu.com/p/19a43343421c