搭建自己的框架之2:MVP+Rxjava2,封裝自己的mvp框架

說到MVP,Android 開發(fā)者肯定會參考Google 的基礎(chǔ)實(shí)現(xiàn):android-architecture吭露;大體的框架如下:

mvp.png

當(dāng)然大家也應(yīng)該關(guān)注正在成熟的:android-architecture-components椭微,還是對開發(fā)有較大的變更埋虹。
其實(shí)這么久來Android 開發(fā)中就沒有什么很官方的框架咆蒿,我覺得大家可以根據(jù)自己App 的業(yè)務(wù)情況和團(tuán)隊(duì)情況,參考android-architecture(暫時并沒有加入android-architecture-components)然后再封裝定制屬于自己的框架介蛉;雖然業(yè)務(wù)可能千變?nèi)f化,但是基本的一個App 的框架可以由mvp+db+http+Base 抽象+rxjava(處理異步等真的方便)實(shí)現(xiàn)自己的代碼結(jié)構(gòu)溶褪、整體架構(gòu)币旧、可測試性、可維護(hù)性的項(xiàng)目猿妈。

本文主要是記錄自己參考todo?mvp?rxjava 結(jié)合Rxjava2 抽象BaseAct吹菱,BasePresenter,BaseView 等實(shí)現(xiàn)的簡單項(xiàng)目框架的過程。(寫作記錄讓人再次思考反逝碓颉)

項(xiàng)目框架簡介(Demo:Android-MVP-Rxjava2

  • mvp 使用mvp 相對傳統(tǒng)的mvc(并不想講mvvm)帶來的蜜糖不是甜的一點(diǎn)點(diǎn)鳍刷,特別是復(fù)雜的項(xiàng)目。
  • rxjava2 改良后的rxjava2 更符合 io32783 Stream 的操作俯抖,處理異步的鏈?zhǔn)讲僮骺雌饋砭蜁芰鲿呈涔希巡僮鲾?shù)據(jù)庫和密集度計算的操作調(diào)度到對應(yīng)的線程然后結(jié)果呈現(xiàn)切回主線程會讓程序流暢很多。
    google 的todo-mvp 使用的是rxjava1,我不想回去
  • 封裝抽象Base 這幾乎就是大學(xué)課本一直在學(xué)的東西芬萍,加上一些泛型的知識
  • 可測性 暫時還沒有尤揣,經(jīng)常開發(fā)的時候API 沒有準(zhǔn)備好的情況不要太多,你還在依賴測試小妹的人工黑測柬祠?
  • dagger.android 有了這個使用dagger 的時候方便快捷簡單多了芹缔,依賴注入使用變得很簡單,代碼量也很少

代碼的自動生成

大家也發(fā)現(xiàn)了瓶盛,使用MVP 抽象封裝后雖然有那么多的好處最欠,但是代碼的量增加了不少示罗,而且習(xí)慣MVC后入門有點(diǎn)難,剛開始寫起來有點(diǎn)吃力芝硬;我們也從來不干重復(fù)性的勞動蚜点,使用插件進(jìn)行代碼自動生成吧。
根據(jù)自己封裝的MVP模式拌阴,比如你要做等錄绍绘,輸入Login,會自動生成login文件夾和LoginActivity迟赃,LoginPresenter陪拘,LoginModel等,并且這些類的范型纤壁,繼承關(guān)系接口實(shí)現(xiàn)都按照規(guī)則自動生成了代碼左刽。

最后github demo 地址,僅供交流

mvp.png

這個項(xiàng)目簡單的演示了MVP得封裝使用酌媒,主要是抽象出基類欠痴,結(jié)合rxjava2。

包含基類的presenter,model,view ,甚至某個功能你覺得一點(diǎn)沒有必要mvp 你可以直接繼承BaseAcvtivity,否則繼承BaseMVPActivity.

登陸功能比較簡單秒咨,model 層的數(shù)據(jù)都是來源于網(wǎng)絡(luò)喇辽;
在文件夾mvp_more 演示的功能下稍微復(fù)雜一點(diǎn),model 層有l(wèi)ocal(db)+remote(http).其中讀取db 流程用rxjava2 包裝了一下雨席,不是在主線程完成的菩咨,不然如果查詢數(shù)據(jù)庫比較耗時UI會明顯卡一下,在讀取數(shù)據(jù)的代碼打一個斷點(diǎn)你會發(fā)現(xiàn)調(diào)試到斷點(diǎn)處不進(jìn)行下一步UI依然可以隨意操作陡厘,如果是主線程肯定不行旦委。

為什么一定要引入Rxjava(2)

  • 當(dāng)業(yè)務(wù)邏輯復(fù)雜繁瑣的時候依然能保持代碼的簡潔性

  • http 的請求和處理使用Retrofit 線程調(diào)度等和R x j a v a 有天然的易結(jié)合

  • 某些需要異步處理的業(yè)務(wù)
    后臺計算不能影響UI 操作的流暢,比如上班打卡中計算能否打卡可能很復(fù)雜雏亚,需要間隔計算但是不能影響查看打卡列表缨硝,異步操作就非常方便

  • Rxjava2 的過濾,變換罢低,組合等操作符集
    比如像JD 等購物網(wǎng)站對結(jié)果根據(jù)價格顏色等進(jìn)行篩選可以非常的方便操作

篩選.jpeg

快速鏈接: 搭建自己的框架之2:MVP+Rxjava2

Demo on github:AndroidAppFrameWork(代碼估計能加快理解)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末查辩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子网持,更是在濱河造成了極大的恐慌宜岛,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件功舀,死亡現(xiàn)場離奇詭異萍倡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)辟汰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進(jìn)店門列敲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來阱佛,“玉大人,你說我怎么就攤上這事戴而〈帐酰” “怎么了?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵所意,是天一觀的道長淮逊。 經(jīng)常有香客問我,道長扶踊,這世上最難降的妖魔是什么泄鹏? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮秧耗,結(jié)果婚禮上备籽,老公的妹妹穿的比我還像新娘。我一直安慰自己绣版,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布歼疮。 她就那樣靜靜地躺著杂抽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪韩脏。 梳的紋絲不亂的頭發(fā)上缩麸,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天,我揣著相機(jī)與錄音赡矢,去河邊找鬼杭朱。 笑死,一個胖子當(dāng)著我的面吹牛吹散,可吹牛的內(nèi)容都是我干的弧械。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼空民,長吁一口氣:“原來是場噩夢啊……” “哼刃唐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起界轩,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤画饥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后浊猾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抖甘,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年葫慎,在試婚紗的時候發(fā)現(xiàn)自己被綠了衔彻。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片薇宠。...
    茶點(diǎn)故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖米奸,靈堂內(nèi)的尸體忽然破棺而出昼接,到底是詐尸還是另有隱情,我是刑警寧澤悴晰,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布慢睡,位于F島的核電站,受9級特大地震影響铡溪,放射性物質(zhì)發(fā)生泄漏漂辐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一棕硫、第九天 我趴在偏房一處隱蔽的房頂上張望髓涯。 院中可真熱鬧,春花似錦哈扮、人聲如沸纬纪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽包各。三九已至,卻和暖如春靶庙,著一層夾襖步出監(jiān)牢的瞬間问畅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工六荒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留护姆,地道東北人。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓掏击,卻偏偏與公主長得像卵皂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子砚亭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,321評論 25 707
  • 博客原文鏈接 Android百大框架排行榜(轉(zhuǎn)) 說明: 無聊寫一篇筆記式文章. 精力有限渐裂,很多錯誤之處,受時間與...
    碼農(nóng)朱同學(xué)閱讀 2,680評論 0 27
  • 附上原文作者連接:作者:金誠 一.榜單介紹 排行榜包括四大類: 單一框架:僅提供路由钠惩、網(wǎng)絡(luò)層柒凉、UI層、通信層或其他...
    這個美嘉不姓陳閱讀 2,264評論 1 35
  • 你只是享受權(quán)利篓跛,卻不履行義務(wù)膝捞! 他的錯,一半在你,與你脫不了干系蔬咬! 你沒有做好指導(dǎo)鲤遥,沒有糾正,懸崖不勒馬林艘,反而揮鞭盖奈!可惡
    細(xì)思篤行閱讀 356評論 0 2
  • 不論是專業(yè),還是業(yè)余狐援,每一位堅持寫作的人钢坦,我都滿懷敬意。 應(yīng)該是說啥酱,對于每一位能將自己的興趣堅持到底的人兒爹凹,我都滿...
    毛桃R閱讀 303評論 0 0