RxJoke:一個集成Rxjava,Retrofit,MVP及Dagger2的開源項目
RxJoke
前言
最近一直在研究和學習,也一直有想做一個開源項目,將消化的知識運用出來,俗話說“紙上得來終覺淺,絕知此事要躬行”,所以就做了這樣一個項目,結合了一些開源框架和三方庫,比如大家熟知的MVP,Rxjava等,做了一個笑話大全。力爭“簡約而不簡單吧”。
工程目錄
工程目錄
整體架構
Model-view-presenter,簡稱MVP,是電腦軟件設計工程中一種對針對MVC模式,再審議后所延伸提出的一種軟件設計模式。
一款工程的架構,就相當于骨骼,骨架,只有骨架搭建的好,才能使整個工程富有彈性,并且邏輯清晰。這里我選用的最近比較熱的MVP設計模式,并且這款模式也已經運用到我之前的企業項目中,效果卓越。對于MVP,這里推薦幾篇文章。
數據源API
巧婦難為無米之炊,做一個項目,數據的來源是很重要的,不論B/S,C/S結構,其中server都是提供數據來源的。而這里我是從百度Api集市搜索的笑話大全API。
- Api獲取數據源(Json數據)
- 利用GsonFormat生成Entity即JavaBean
這里由于結合了rxjava,所以model層也就上面獲取的javabean,獲取數據的代碼我放到了presenter層。
獲取數據
Retrofit – Java(Android) 的REST 接口封裝類庫
RxJava – 一個在 Java VM 上使用可觀測的序列來組成異步的、基于事件的程序的庫
獲取數據方面(Presenter層)我利用了retrofit2+rxjava,之前用過volley框架,okhttp框架,感覺是各有所長,retrofit2給我的感覺就是分層清晰。
而rxjava,對于有一定開發經驗的程序員來說。上手還是挺輕松的,并且利用響應式開發,你會發現以前的很多需要回調來回調去的事情變得簡單輕松。
這里也推幾篇文章。
- 給 Android 開發者的 RxJava 詳解(扔物線)
- RxAndroid和RxJava的資料分享
- 好用的網絡請求庫Retrofit2(入門及講解)
- RxJava 與 Retrofit 結合的最佳實踐
- 當鋼鐵俠反應更靈敏-RxJava
UI層
谷歌推出了全新的設計語言Material Design
butterknife注解框架的偷懶插件
UI顯示層,利用了已經普及的Material Design中的設計規范,以及一些常用控件,如RecycleView,SwipeRefreshlayout等。完成了上拉加載,下拉刷新等功能,并且利用了butterknife,用來快速注入視圖。
(PS viewholder 同樣可以利用ButterKnife插件生成哦!)
ButterKnife插件使用
其他
- Leakcanary -內存泄露檢測工具 LeakCanary 這里提一下,為什么要用這個,首先,自工作之后,發現一款應用,不論你代碼寫的多好,多美,多優雅,都不如給用戶帶來良好體驗更重要,而用戶體驗一般體現在兩點,一是界面美觀,二則是操作流暢,也即性能良好,當一個工程越來越大,你會發現,性能問題也就成了重中之重。所以這里推薦一下。當然你會利用MAT監控內存也不錯哦。
- Glide 圖片加載框架(對比其他如picasso,imageloader更優)
- Dagger2 依賴注入框架
這里著重說一下依賴注入框架Dagger2,這可以說是項目中較難上手的,并且是在安卓中優點不明確的一個框架,我曾經花了大量時間去理解并嘗試寫一篇文章去談一談當它運用到實際項目中時,給我們帶來的好處,目前也在消化中,發現目前網上大量文章所說的都有一些誤區。但是現在我還未將它引入這個項目,當然這里推薦一篇文章
當你進入誤區的時候,嘗試從其根源出發,會有意想不到的收獲,大家先不去了解Dagger2,而是嘗試理解依賴注入。
后期我會將dagger2引入工程。
后話
以上是開源項目 RxJoke的一些簡介,有希望了解更多的可以Fork一下,未來一段時間我會繼續推進項目的進程,優化以及更細。比如緩存框架,熱更新框架等等。
截圖