999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

探討一種Android快速開發的MVP模式

2019-12-10 09:48:22湯富彬
電腦知識與技術 2019年28期

湯富彬

摘要:隨著安卓開發技術的成熟,Android技術選型模式也有很多,第三方庫也層出不窮。筆者針對開發的用到的第三方庫進行了整合,以到達快速開發的目的。當項目越龐大、復雜,參與的研發人員越來越多的時候,采用mvp模式的優勢就明顯起來,MVP模式(Model-View-Presenter)可以說是MVC模式(Model-View-Controller)在Android開發上的一種變種、進化模式。Mvp模式選用Kotlin語言作為開發語言該語言相比于Java語言的優勢明顯,Kotlin 有更強大的類型推斷,也省去了末尾的省略號,各種方法的調用也更簡單了。而且在Android中,有一個工具叫kotlin-android-extensions來幫助省略findViewByid的代碼,直接使用在xml文件中寫的id名字來獲取控件的引用,使得代碼的可讀性的提高,也使代碼更加簡潔。

關鍵詞:Kotlin;MVP框架;Android

中圖分類號:TP311? ? ? ? 文獻標識碼:A

文章編號:1009-3044(2019)28-0090-02

1 Android快速開發模式的語言選擇

Android快速開發選用Kotlin作為開發語言該語言相比于Java語言有很大優勢,Kotlin 有更強大的類型推斷,也省去了末尾的省略號,各種方法的調用也更簡單。而且在Android中,有一個工具叫kotlin-android-extensions來幫助省略findViewByid的代碼,直接使用在xml文件中寫的id名字來獲取控件的引用,使得代碼的可讀性得到提高,也使得代碼更加簡潔。

Kotlin的空指針安全可控,空指針檢查提前到了編譯時,使程序的空指針得到了明顯的改善。只是與java互相調用的時候,不太好檢測,這是因為java的代碼內不能檢測返回的是否為空。因此在于java代碼互相調用的時候需要特別注意。大致來講,Kotlin的空指針安全還是會使程序得到良好的改善。

其次kotlin語言采用實用、整潔、高效率的程序輸入,由于引入了object,更方便地創建單例。相比于java的單例,不需要考慮延遲初始化,同步的問題,在語言的層面上為提供了方便。引入data? class,創建實體數據類,避免了在去寫getter、setting、toString等方法。引入了擴展方法,可以用來擴展已定義類型中的方法成員。

kotlin語言對Lambda和函數式編程更好的支持,Lambda表達式可以省去創建很多的匿名內部類。對函數式編程的友好支持,便于寫出更加穩定的方法和代碼。從客觀上說,Kotlin的語法和特性讓代碼更具有描述性。而Kotlin的標準庫和引入擴展方法加強了描述性。但是總的來說,代碼的可讀性還是靠編碼人員的能力。

kotlin成為了Android的官方語言,得到官方的宣傳和支持,對于我們來說,Kotlin版本的庫和框架會越來越多,我們使用也會越來越方便。

2 使用MVP的架構模式來分離界面和數據處理

2.1 Mvp模式的優勢

MVP相比于原來的MVC模式代碼更簡潔,特別說明的是簡潔是邏輯的簡潔,而不是代碼本身。比如原來的MVC中,Activity 作為Controller會寫很多與本身職責不一樣的代碼,會造成Activity之中邏輯混亂,而MVP中是把Activity作為View層,只負責了界面的展示,而把MVC中的Controller職責分離到了Persenter中去,使得邏輯更加清晰。

使用MVP可以分離View和Model的交互,在中間加入了一個Persenter層,使各自的職責更加清晰。為之后的維護減輕負擔,因為可以改變其中的一層,而不影響其他的層次。更加方便單元測試,由于職責的清晰,可以單獨的測試各個層面的代碼。

2.2 使用RxJava+RxAndroid

使用這個框架的優勢就是,可以處理并行的發送請求,使用靈活,線程切換簡單,也不需要自己維護線程池,減少邏輯層次。目前也有很多的兼容RxJava的其他框架可以選擇,比如:RxBinding、RxPermissions、RxBus、Retrofit。

2.3 選用Retrofit2.0作為網絡框架,并集中的處理服務器返回的數據

目前主流的網絡框架有Android-Async-Http、Volley、OkHttp3、Retrofit2.0。

其中Android-Async-Http 作者已停止維護,放棄。Volley不適用下載和上傳文件的網絡操作。適合輕量級網絡交互,網絡請求頻繁,傳輸數據量小的場景。而Okhttp是一個封裝類似HttpUrlConnection的一個東西,Android 4.4之后HttpUrlConnnection部分實現已經與Okhttp一致,證明了Okhttp的性能,主要的特點有:共享同一個socket來處理同一個服務器的所有請求,支持同步、異步請求,保存cookie到應用的sharepreference ,封裝了線程池、數據轉換、參數使用、錯誤處理等,無縫的支持GZIP來減少數據流量,使用比HttpUrlConnection更方便,緩存響應數據來較少重復的網絡請求,能從很多常用的連接問題中自動恢復,解決了代理服務器問題和SSL握手失敗問題,基于NIO和okio,所以性能更好,請求、處理速度快。Retrofit2.0是基于Okhttp的一個框架,具備了Okhhtp的所有優點,它可以通過注解配置請求,提供了Rxjava的支持。所以選用此框架的最好的選擇。

2.4 使用AndroidUtilCode作為工具類

這個工具類目前在github上已有22k+的star,具有很強的集合性,此工具類包括緩存,圖片,權限,文件,單位轉換,編解碼等等的集成,可以通過自身需要進行裁剪。基本上覆蓋了開發過程中需要的各種工具類。

2.5 其他

選用Gson作為Json的解析框架。Json的解析框架主要有:Fastjson和Gson,就使用的方便性上來說,兩大框架基本一致,Fastjson比Gson速度更快,但是由于Gson包的體積比Fastjson更小,而Retrofit2.0只支持Gson,所有選擇Gson來作為json解析框架。選擇RxPermissions框架來處理動態處理權限,由于Android自身的動態強求權限,過于復雜,不利于解耦。

3 快速開發mvp模式的搭建

首先著手于MVP模式基類BaseAcitivity、BasePresenter、和IBaseView的創建,其次創建網絡的請求框架的設置類和根據具體的接口返回數據的統一處理,包裝第三方框架,方便以后在項目中替換框架。具體代碼如下:

總之,對于安卓快速開發的MVP模式,也可以稱之為結構,國外普遍直接稱為Android MVP,除此有的稱為MVP Pattern或者MVP Framework/Architecture,筆者認為這應該算是一種代碼風格(Code Style),在分類上應該比較類似設計模式(Design Pattern),Android常規的開發模式經常被稱為MV模式(Model-View),引入數據綁定后的MVVM模式(Model-View-ViewModel)相比較,一個Activity可以包含一個以上的Presenter,MVP的主要特點就是把Activity里的許多邏輯都抽離到View和Presenter接口中去,并由具體的實現類來完成。這種寫法雖然多了許多IView和Presenter,但是需要什么業務就new什么樣的Presenter,方便靈活,在未找到替代mvp模式之前,mvp模式應用于快速開發andorid優勢明顯。

參考文獻:

[1] 何紅輝,關愛民.Android源碼設計模式解析與實戰[M].北京:人民郵電出版社,2015.

[2] 楊靖,洪蕾.MVP設計模式研究及在Android中的設計[J].科技創新導報,2016(34).

[3] 劉升貴.基于MVP模式的Android應用程序實現及其單元測試研究[J].福建電腦,2017(7).

[4] 郎志超.基于MVP模式的SAR圖像融合系統設計與實現[J].機電工程,2010(1).

【通聯編輯:唐一東】

主站蜘蛛池模板: 国产欧美日本在线观看| 97青草最新免费精品视频| 四虎国产永久在线观看| 国产成人AV男人的天堂| 欧美精品黑人粗大| 91精品国产91久久久久久三级| 亚洲精品无码AⅤ片青青在线观看| 婷婷色中文| 国产精品jizz在线观看软件| 亚洲欧美人成人让影院| 久久久久久国产精品mv| 国产91透明丝袜美腿在线| 亚洲91精品视频| 亚洲精品男人天堂| 成人免费午间影院在线观看| 欧美日韩在线成人| 亚洲欧美极品| 伊人久久大香线蕉影院| 精品综合久久久久久97超人| 国产日韩AV高潮在线| www.91中文字幕| 久久精品国产精品青草app| 日韩 欧美 小说 综合网 另类| 亚洲一区波多野结衣二区三区| 国产呦视频免费视频在线观看| 国产精品永久不卡免费视频 | 国产好痛疼轻点好爽的视频| 亚洲无线一二三四区男男| 青青草原国产| 亚洲国产成人自拍| 国产中文在线亚洲精品官网| 国产精品亚欧美一区二区三区 | 久久中文电影| 日本一区二区不卡视频| 亚洲系列中文字幕一区二区| 亚洲日韩久久综合中文字幕| 国产精品久线在线观看| 国模粉嫩小泬视频在线观看| 日本久久免费| 欧美亚洲第一页| 亚洲性网站| 久久这里只有精品免费| 精品亚洲欧美中文字幕在线看| 日韩在线1| 在线免费无码视频| 亚洲水蜜桃久久综合网站| 亚洲aaa视频| 中国国产一级毛片| 不卡的在线视频免费观看| 性做久久久久久久免费看| 亚洲男人的天堂在线| av在线无码浏览| 日本欧美视频在线观看| 成人免费午夜视频| 国产网站黄| 国产精品无码AⅤ在线观看播放| 亚洲天堂网在线播放| 国产成人区在线观看视频| 欧美一级黄片一区2区| 美女啪啪无遮挡| 色呦呦手机在线精品| 国产欧美成人不卡视频| 六月婷婷精品视频在线观看| 成人综合久久综合| 免费国产在线精品一区| 亚洲av无码人妻| 99re经典视频在线| 国产精品网址你懂的| 欧美成在线视频| 无码有码中文字幕| 欧美福利在线| 网友自拍视频精品区| 亚洲中文字幕在线一区播放| 宅男噜噜噜66国产在线观看| 亚洲欧美成aⅴ人在线观看| 亚洲精品成人片在线观看| 日本成人在线不卡视频| 国产永久无码观看在线| 国产AV无码专区亚洲精品网站| 看国产毛片| 伊人久久婷婷| 久久男人视频|