RxJoke:一个集成Rxjava,Retrofit,MVP及Dagger2的开源项目
DolGrenier
9年前
<p> </p> <blockquote> <p style="text-align:center"><img alt="RxJoke:一个集成Rxjava,Retrofit,MVP及Dagger2的开源项目" src="https://simg.open-open.com/show/25032b02c38c19ef43ff9fcdd29e4ffa.png"></p> </blockquote> <p style="text-align:center">RxJoke</p> <h2>前言</h2> <p>最近一直在研究和学习,也一直有想做一个开源项目,将消化的知识运用出来,俗话说“纸上得来终觉浅,绝知此事要躬行”,所以就做了这样一个项目,结合了一些开源框架和三方库,比如大家熟知的MVP,Rxjava等,做了一个笑话大全。力争“简约而不简单吧”。</p> <p>工程目录</p> <p><img alt="RxJoke:一个集成Rxjava,Retrofit,MVP及Dagger2的开源项目" src="https://simg.open-open.com/show/7c7ea073853d38634330f24eec1b7672.png"></p> <p>工程目录</p> <h2>整体架构</h2> <blockquote> <p>Model-view-presenter,简称MVP,是电脑软件设计工程中一种对针对MVC模式,再审议后所延伸提出的一种软件设计模式。</p> </blockquote> <p>一款工程的架构,就相当于骨骼,骨架,只有骨架搭建的好,才能使整个工程富有弹性,并且逻辑清晰。这里我选用的最近比较热的MVP设计模式,并且这款模式也已经运用到我之前的企业项目中,效果卓越。对于MVP,这里推荐几篇文章。</p> <ol> <li><a href="http://www.open-open.com/lib/view/open1461504038601.html">Android中的MVP</a></li> <li><a href="http://www.open-open.com/lib/view/open1461504312806.html">Android开发MVP模式解析</a></li> <li><a href="http://www.open-open.com/lib/view/open1461504906641.html">MVP模式在Android开发中的应用</a></li> </ol> <h2>数据源API</h2> <blockquote> <p><a href="/misc/goto?guid=4958869992665933264">API Store,为开发者提供最全面的API服务</a></p> </blockquote> <p>巧妇难为无米之炊,做一个项目,数据的来源是很重要的,不论B/S,C/S结构,其中server都是提供数据来源的。而这里我是从<a href="/misc/goto?guid=4959671463067819570"><strong>百度Api集市</strong></a>搜索的<a href="/misc/goto?guid=4959671463157337029"><strong>笑话大全API</strong></a>。</p> <ol> <li>Api获取数据源(Json数据)</li> <li>利用GsonFormat生成Entity即JavaBean</li> </ol> <p>这里由于结合了rxjava,所以model层也就上面获取的javabean,获取数据的代码我放到了presenter层。</p> <blockquote> <p><a href="http://www.open-open.com/lib/view/open1455897061105.html">插件GsonFormat快速实现JavaBean</a></p> </blockquote> <h2>获取数据</h2> <blockquote> <p>Retrofit – Java(Android) 的REST 接口封装类库</p> <p>RxJava – 一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库</p> </blockquote> <p>获取数据方面(Presenter层)我利用了retrofit2+rxjava,之前用过volley框架,okhttp框架,感觉是各有所长,retrofit2给我的感觉就是分层清晰。<br> 而rxjava,对于有一定开发经验的程序员来说。上手还是挺轻松的,并且利用响应式开发,你会发现以前的很多需要回调来回调去的事情变得简单轻松。<br> 这里也推几篇文章。</p> <ol> <li><a href="http://www.open-open.com/lib/view/open1452919004433.html">给 Android 开发者的 RxJava 详解(扔物线)</a></li> <li><a href="/misc/goto?guid=4959671463265635552">RxAndroid和RxJava的资料分享</a></li> <li><a href="http://www.open-open.com/lib/view/open1461505284381.html">好用的网络请求库Retrofit2(入门及讲解)</a></li> <li><a href="http://www.open-open.com/lib/view/open1461505638007.html">RxJava 与 Retrofit 结合的最佳实践</a></li> <li><a href="http://www.open-open.com/lib/view/open1461505986828.html">当钢铁侠反应更灵敏-RxJava</a></li> </ol> <h2>UI层</h2> <blockquote> <p>谷歌推出了全新的设计语言Material Design</p> <p>butterknife注解框架的偷懒插件</p> </blockquote> <p>UI显示层,利用了已经普及的Material Design中的设计规范,以及一些常用控件,如RecycleView,SwipeRefreshlayout等。完成了上拉加载,下拉刷新等功能,并且利用了butterknife,用来快速注入视图。<br> (PS viewholder 同样可以利用ButterKnife插件生成哦!)</p> <p><img alt="RxJoke:一个集成Rxjava,Retrofit,MVP及Dagger2的开源项目" src="https://simg.open-open.com/show/84b66a1c0caee9c008da2a266095c9a7.gif"></p> <p>ButterKnife插件使用</p> <h2>其他</h2> <ol> <li>Leakcanary -内存泄露检测工具 LeakCanary 这里提一下,为什么要用这个,首先,自工作之后,发现一款应用,不论你代码写的多好,多美,多优雅,都不如给用户带来良好体验更重要,而用户体验一般体现在两点,一是界面美观,二则是操作流畅,也即性能良好,当一个工程越来越大,你会发现,性能问题也就成了重中之重。所以这里推荐一下。当然你会利用MAT监控内存也不错哦。</li> <li>Glide 图片加载框架(对比其他如picasso,imageloader更优)</li> <li>Dagger2 依赖注入框架</li> </ol> <p>这里着重说一下依赖注入框架Dagger2,这可以说是项目中较难上手的,并且是在安卓中优点不明确的一个框架,我曾经花了大量时间去理解并尝试写一篇文章去谈一谈当它运用到实际项目中时,给我们带来的好处,目前也在消化中,发现目前网上大量文章所说的都有一些误区。但是现在我还未将它引入这个项目,当然这里推荐一篇文章</p> <blockquote> <p><a href="http://www.open-open.com/lib/view/open1455706482526.html">依赖注入那些事儿</a></p> </blockquote> <p>当你进入误区的时候,尝试从其根源出发,会有意想不到的收获,大家先不去了解Dagger2,而是尝试理解依赖注入。</p> <p>后期我会将dagger2引入工程。</p> <h2>后话</h2> <p>以上是开源项目 <a href="/misc/goto?guid=4959671463397412203">RxJoke</a>的一些简介,有希望了解更多的可以Fork一下,未来一段时间我会继续推进项目的进程,优化以及更细。比如缓存框架,热更新框架等等。</p> <h2>截图</h2> <p><img alt="RxJoke:一个集成Rxjava,Retrofit,MVP及Dagger2的开源项目" src="https://simg.open-open.com/show/5d5ed3fe2b0900ca15355ffaa29887a0.png"></p> <p><img alt="RxJoke:一个集成Rxjava,Retrofit,MVP及Dagger2的开源项目" src="https://simg.open-open.com/show/3ba355e4264b8d588013ba02837a3483.png"></p> <p><img alt="RxJoke:一个集成Rxjava,Retrofit,MVP及Dagger2的开源项目" src="https://simg.open-open.com/show/563c4ff956f893a383397eb029f74ca8.png"></p> <p><img alt="RxJoke:一个集成Rxjava,Retrofit,MVP及Dagger2的开源项目" src="https://simg.open-open.com/show/e37b8ff5066bc70eff3410e638378e9a.png"></p> <p><br> </p> <p><a href="/misc/goto?guid=4959671463478861316">文/深蓝黯泪(简书作者)</a></p>