RxJoke
前言
最近一直在研究和學(xué)習(xí),也一直有想做一個(gè)開(kāi)源項(xiàng)目振定,將消化的知識(shí)運(yùn)用出來(lái)后频,俗話(huà)說(shuō)“紙上得來(lái)終覺(jué)淺,絕知此事要躬行”靠益,所以就做了這樣一個(gè)項(xiàng)目胧后,結(jié)合了一些開(kāi)源框架和三方庫(kù)抱环,比如大家熟知的MVP,Rxjava等镇草,做了一個(gè)笑話(huà)大全。力爭(zhēng)“簡(jiǎn)約而不簡(jiǎn)單吧”竖伯。
工程目錄
整體架構(gòu)
Model-view-presenter祟偷,簡(jiǎn)稱(chēng)MVP打厘,是電腦軟件設(shè)計(jì)工程中一種對(duì)針對(duì)MVC模式户盯,再審議后所延伸提出的一種軟件設(shè)計(jì)模式。
一款工程的架構(gòu)艰管,就相當(dāng)于骨骼牲芋,骨架捺球,只有骨架搭建的好,才能使整個(gè)工程富有彈性裂逐,并且邏輯清晰卜高。這里我選用的最近比較熱的MVP設(shè)計(jì)模式掺涛,并且這款模式也已經(jīng)運(yùn)用到我之前的企業(yè)項(xiàng)目中疼进,效果卓越伞广。對(duì)于MVP,這里推薦幾篇文章。
數(shù)據(jù)源API
巧婦難為無(wú)米之炊减拭,做一個(gè)項(xiàng)目拧粪,數(shù)據(jù)的來(lái)源是很重要的,不論B/S,C/S結(jié)構(gòu),其中server都是提供數(shù)據(jù)來(lái)源的正什。而這里我是從百度Api集市搜索的笑話(huà)大全API婴氮。
- Api獲取數(shù)據(jù)源(Json數(shù)據(jù))
- 利用GsonFormat生成Entity即JavaBean
這里由于結(jié)合了rxjava,所以model層也就上面獲取的javabean,獲取數(shù)據(jù)的代碼我放到了presenter層。
獲取數(shù)據(jù)
Retrofit – Java(Android) 的REST 接口封裝類(lèi)庫(kù)
RxJava – 一個(gè)在 Java VM 上使用可觀測(cè)的序列來(lái)組成異步的荣暮、基于事件的程序的庫(kù)
獲取數(shù)據(jù)方面(Presenter層)我利用了retrofit2+rxjava,之前用過(guò)volley框架穗酥,okhttp框架砾跃,感覺(jué)是各有所長(zhǎng)节吮,retrofit2給我的感覺(jué)就是分層清晰透绩。
而rxjava,對(duì)于有一定開(kāi)發(fā)經(jīng)驗(yàn)的程序員來(lái)說(shuō)碳竟。上手還是挺輕松的狸臣,并且利用響應(yīng)式開(kāi)發(fā),你會(huì)發(fā)現(xiàn)以前的很多需要回調(diào)來(lái)回調(diào)去的事情變得簡(jiǎn)單輕松统翩。
這里也推幾篇文章厂汗。
- 給 Android 開(kāi)發(fā)者的 RxJava 詳解(扔物線(xiàn))
- RxAndroid和RxJava的資料分享
- 好用的網(wǎng)絡(luò)請(qǐng)求庫(kù)Retrofit2(入門(mén)及講解)
- RxJava 與 Retrofit 結(jié)合的最佳實(shí)踐
- 當(dāng)鋼鐵俠反應(yīng)更靈敏-RxJava
UI層
谷歌推出了全新的設(shè)計(jì)語(yǔ)言Material Design
butterknife注解框架的偷懶插件
UI顯示層呜师,利用了已經(jīng)普及的Material Design中的設(shè)計(jì)規(guī)范,以及一些常用控件栗涂,如RecycleView,SwipeRefreshlayout等祈争。完成了上拉加載,下拉刷新等功能忿墅,并且利用了butterknife疚脐,用來(lái)快速注入視圖棍弄。
(PS viewholder 同樣可以利用ButterKnife插件生成哦!)
其他
- Leakcanary -內(nèi)存泄露檢測(cè)工具 LeakCanary 這里提一下照卦,為什么要用這個(gè)役耕,首先聪廉,自工作之后板熊,發(fā)現(xiàn)一款應(yīng)用干签,不論你代碼寫(xiě)的多好,多美喘沿,多優(yōu)雅竭贩,都不如給用戶(hù)帶來(lái)良好體驗(yàn)更重要留量,而用戶(hù)體驗(yàn)一般體現(xiàn)在兩點(diǎn)哟冬,一是界面美觀浩峡,二則是操作流暢翰灾,也即性能良好伐债,當(dāng)一個(gè)工程越來(lái)越大峰锁,你會(huì)發(fā)現(xiàn),性能問(wèn)題也就成了重中之重虹蒋。所以這里推薦一下魄衅。當(dāng)然你會(huì)利用MAT監(jiān)控內(nèi)存也不錯(cuò)哦塘辅。
- Glide 圖片加載框架(對(duì)比其他如picasso扣墩,imageloader更優(yōu))
- Dagger2 依賴(lài)注入框架
這里著重說(shuō)一下依賴(lài)注入框架Dagger2,這可以說(shuō)是項(xiàng)目中較難上手的,并且是在安卓中優(yōu)點(diǎn)不明確的一個(gè)框架荆责,我曾經(jīng)花了大量時(shí)間去理解并嘗試寫(xiě)一篇文章去談一談當(dāng)它運(yùn)用到實(shí)際項(xiàng)目中時(shí)亚脆,給我們帶來(lái)的好處,目前也在消化中键耕,發(fā)現(xiàn)目前網(wǎng)上大量文章所說(shuō)的都有一些誤區(qū)柑营。但是現(xiàn)在我還未將它引入這個(gè)項(xiàng)目由境,當(dāng)然這里推薦一篇文章
當(dāng)你進(jìn)入誤區(qū)的時(shí)候,嘗試從其根源出發(fā)讥蟆,會(huì)有意想不到的收獲,大家先不去了解Dagger2修然,而是嘗試?yán)斫庖蕾?lài)注入愕宋。
后期我會(huì)將dagger2引入工程中贝。
后話(huà)
以上是開(kāi)源項(xiàng)目 RxJoke的一些簡(jiǎn)介臼朗,有希望了解更多的可以Fork一下视哑,未來(lái)一段時(shí)間我會(huì)繼續(xù)推進(jìn)項(xiàng)目的進(jìn)程挡毅,優(yōu)化以及更新。比如緩存框架段磨,熱更新框架等等薇溃。