`
storm_boohee
  • 浏览: 1165 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

我心中的Android REST Client--9gag

阅读更多
What is a good app
作为一名Android Developer,一直都想Make A Good App。很多次的我都在反问自己,我心中的Good App应该是什么样的呢?为了寻找答案,自己一直在产品、设计以及技术上都花了不少时间探索与研究。如今可能点雏形,我心中的Good App可能需要满足以下几个方面:

产品上要追求功能简洁至上,坚持认为Simple is beautiful!

设计上要满足平台特性,遵循Android Design,交互简单,多注意细节。

技术上要时刻紧跟潮流,利用新的架构,新的特性,新的工具来让你的产品更稳固,更酷炫。

但是在公司的话就有这么一个矛盾点,新的技术,新的架构就意味着有很多的不确定因素,如果一味的追求潮流,尝鲜,从公司的角度来说风险是相当大的。之前可能也吃过类似的亏,所以一直认为公司的App一定要以稳为前提,稳中求新,稳中求酷!

紧跟潮流的9Gag
作为一名潮人,必须想要体验并尝试最新的架构与技术,于是9Gag这个项目就诞生了。遵循Android Design的一款简洁的App。

麻雀虽小,五脏俱全,这款App主要使用Android方面最新的IDE,新的技术、新特性,以及一些流行的开源库快速开发一个不错的REST Client,亲自实践了如何Make A Good App!



应用架构
整个应用的架构是遵循Google I/O 2013提出的REST架构。



网络请求库
网络请求采用了Volley,也是Google I/O 2013发布的网络请求库,优势在于除了提供了高性能的网络请求外,还可以统一管理请求,可以在整个App中只维持一个请求队列示例。

public static RequestQueue mRequestQueue = Volley.newRequestQueue(App.getContext());
并且Volley还提供了中段特定请求的方法,利用这个特性可以在Activity或Fragment关闭时中断该页面的请求,节省有限资源的消耗,节流省电,顶Google!

public static void addRequest(Request<?> request, Object tag) {
    if (tag != null) {
        request.setTag(tag);
    }
    mRequestQueue.add(request);
}

public static void cancelAll(Object tag) {
    mRequestQueue.cancelAll(tag);
}
在加上Volley是官方的,还有比用官方的库更放心的么?

图片加载
其实Volley本身对网络图片也提供了良好的支持,完全可以满足简单REST客户端的需求, 而且提供了本地缓存,但需要自己定义内存缓存算法。实现起来也比较简单,具体可以参见BitmapLruCache.java文件。但是Volley的图片加载不提供加载进度回调,所以从这点来说加载网络图片还是推荐使用UniversalImageLoader,目前最流行的图片加载库,配置强大,使用简单,绝对能满足你的各种需求!

ContentProvider & CursorLoader
CursorLoader是Loader的子类,是在Android 3.0新增的类。它提供了一套在UI的主线程中异步加载数据的框架。使用Loader可以非常简单的在Activity或者Fragment中异步加载数据,一般适用于大量的数据查询,或者需要经常修改并及时展示的数据显示到UI上,这样可以避免查询数据的时候,造成UI主线程的卡顿。

CursorLoader监听数据源,当数据改变的时候,将新的数据发布到UI上。CursorLoader还有一个更为强劲的功能,就是在接到数据变更的通知时会重新query一次,这样就保证了Cursor的数据始终与数据库同步。配合LoaderManager,使用CursorLoader是目前在Activity&Fragment中异步读取ContentProvider的最佳方案。

ContentProvider着实让人很头痛,实际上Android文档中提到,如果没有跨进程的需求,或者向其他应用分享数据的需求就不必使用ContentProvider。但ContentProvider为数据库的管理提供了更清晰的接口,并且为了使用CursorLoader,ContentProvider是必须构建的。

开源库
自己接触开源也有一些时日了,9gag项目中也引用了一些比较成熟的开源库。在开源世界一直流行一句话:不要重复发明轮子。因此在一些开发资源有限的情况下,开源世界就成了你最大的资源,很多成熟很酷的开源库都可以直接拿来用,把精力放在自己的核心业务与功能上,能够快速实现开发。开源让无数人受益,在我们受益的同时也应该感谢那些开源世界的贡献者,如果有机会也应该为开源世界贡献自己的一份力,这样开源才能持续壮大发展下去,于是也决定将此项目开源出来。

github地址:9GAG
  • 大小: 66.9 KB
分享到:
评论

相关推荐

    Android代码-9GAG

    This a powerful REST Client of 9GAG unofficial which uses Android Studio Gradle, and follows Android Design. Run Environment Min SDK verison 4.0 Android Studio version 1.0 final Gradle version 2.2.1 ...

    Android代码-9GAG网站客户端.rar

    9GAG网站客户端是将9GAG网站的功能移植到Android平台上的应用,它允许用户在移动设备上无缝浏览9GAG的内容,并实现互动,包括点赞、评论和分享。 【Android应用开发基础】 1. **用户界面(UI)设计**:Android应用...

    AMXX-Gag-master_sillyi2k_HalfLife_ThisLife_

    《AMXX-Gag-master_sillyi2k_HalfLife_ThisLife_》插件详解 在半条命(HalfLife)这款经典的第一人称射击游戏中,玩家社区不断探索和开发各种自定义功能以提升游戏体验。AMX Mod X(AMXX)是一个广泛使用的Mod,它...

    Android高级应用源码-9GAG网站客户端.zip

    【Android高级应用源码-9GAG网站客户端.zip】是一个包含了一个实现9GAG网站功能的Android应用程序的源代码包。9GAG是一个流行的在线社区,用户可以分享和浏览各种幽默、趣味和创意内容。这个源码对于Android开发者,...

    K9GAG08 三星MLC nand flash

    ### K9GAG08 三星MLC NAND Flash 芯片手册知识点解析 #### 一、概述 本文档提供了K9GAG08系列三星MLC(Multi-Level Cell)NAND Flash存储器的技术规格与操作指南。该系列芯片适用于需要高密度存储的应用场景,并...

    java安卓源码特效-9GAG:9GAG-Android(非官方),Android设计

    9GAG-Android (unofficial) 9GAG 安卓客户端个人版 9GAG安卓客户端,遵从Android Design 作者大三学生一枚,详见about页面,有意合作或其他事宜请联系邮箱哦。 个人Email: ###图赏 ###几个特点: 1.完美的支持安卓...

    9GAG - 图片「9gag-pics」-crx插件

    免费的谷歌浏览器扩展程序,用于隐藏9gag上的非静态帖子。 9gag供稿上不再有视频和GIF! 支持语言:English

    S3C6410+K9GAG08的H-JTAG的驱动

    在标题描述中提到,原有的H-JTAG软件内建的驱动并不包含对K9GAG08的支持,只包含了K9F1G08和K9F2G08这两个型号。 为了解决这个问题,有开发者专门为S3C6410和K9GAG08组合提供了兼容的H-JTAG驱动。这个驱动程序可能...

    9GAG网站客户端.rar

    9GAG是一个非常受欢迎的在线娱乐社区,用户可以分享各种有趣的图片、动图、短视频以及笑话等内容。"9GAG网站客户端.rar"很可能是这个社区的第三方客户端应用源代码,或者是一个非官方版本的实现。从描述来看,这个...

    Tat蛋白增强转基因HLA-A2小鼠中基于Gag的特定外来体靶向T细胞的Gag / Tat-Texo疫苗的CTL反应和治疗性免疫

    我们先前使用配备了Gag特异性树突状细胞(DC)的ConAstimulated多克隆CD8 + T(ConA-T)细胞,开发了一种新型的针对HIV-1 Gag-spe特异外来体(EXO)的基于T细胞的疫苗(Gag-Texo)。释放的EXO,并且表明Gag-Texo比...

    三星K9GAG08U0D--2G Nand Flash驱动(S3C6410--4Bit硬件ECC校验)

    三星K9GAG08U0D--2G Nand Flash驱动(S3C6410--4Bit硬件ECC校验),完全原创,在ok6410(2G nand falsh)上测试通过,能实现6410硬件编解码 4 bit ECC并能纠正数据错误!

    9gag-pics-crx插件

    【9gag-pics-crx插件】是一款专为谷歌Chrome浏览器设计的免费扩展程序,其主要功能是帮助用户在浏览9gag网站时过滤掉非静态内容,如视频和GIF,使得用户可以专注于查看静态图片,提高浏览体验。 首先,我们要了解...

    K9GAG08U0M的datasheet

    ### K9GAG08U0M:2GB NAND Flash Memory 芯片知识点解析 #### 一、产品概述 K9GAG08U0M是三星电子生产的一款2GB(2G x 8位)NAND Flash存储器芯片。这款芯片在市场中较为罕见,主要用于满足对大容量、高性能存储...

    K9GAG08U0E nandflash数据手册

    根据提供的文件信息,我们可以了解到这是一份关于K9GAG08U0E、K9LBG08U0E、K9HCG08U1E等型号的MLC(Multi-Level-Cell,即多层单元)NAND Flash的数据手册。这份手册是由三星电子有限公司(Samsung Electronics Co., ...

    9GAG的扩展 - 搜索和复制GIF「Extension for 9GAG - Search and Copy GIFs」-crx插件

    ... 我也写了一个关于这个的博客!...检查一下:https://medium.com/@swapsha96/i-wanted-a-quick-way-to-copy-and-paste-gifs-for-9gag-so-i-built-a-chrome-extension -ff87490f4824 支持语言:English

    9gag-desktop:台式机上的9gag:grinning_face_with_sweat:

    9gag-desktop 是一个专为台式机设计的应用程序,让用户在桌面环境下也能方便地浏览和享受9GAG网站上的各种趣味内容。9GAG是一个知名的在线社区,用户可以分享和发现幽默图片、搞笑动图、趣味故事等各种娱乐资源。这...

    9GAG开源项目

    【9GAG开源项目】是互联网上一个广受欢迎的娱乐社交平台9GAG的开源版本。这个项目允许开发者、设计师和技术爱好者深入探索9GAG的后台运作机制,学习和研究其架构设计,以及如何构建类似的应用。开源的意义在于促进...

    Android 最牛的三维侧边栏效果(9GAG) 源码

    9GAG-master史上最牛的侧滑效果,其中加载图片展示的时候也是慢慢翻转效果,侧滑Menu更是牛逼。 其中自定义BlurFoldingActionBarToggle 提供了onDrawerOpened()和onDrawerClosed()方法, 然后在这两个方法里面...

    Extension for 9GAG - Search and Copy GIFs-crx插件

    语言:English ... ... 我也写了一个关于这个的博客! 检查一下:https://medium.com/@swapsha96/i-wanted-a-quick-way-to-copy-and-paste-gifs-for-9gag-so-i-built-a-chrome-extension -ff87490f4824

Global site tag (gtag.js) - Google Analytics