我心中的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
我心中的Android REST Client--9gag相关推荐
- Android新浪微博client(七)——ListView图片异步加载、高速缓存
原文出自:方杰|http://fangjie.sinaapp.com/?p=193 转载请注明出处 终于效果演示:http://fangjie.sinaapp.com/?page_id=54 该项目代 ...
- android websocket client 如何调用autobahn.jar
Android调用 autobahn.jar: 1.下载源码:使用library: https://github.com/tavendo/AutobahnAndroid: 2.编译,得到autoha ...
- android studio yasea,yasea: RTMP streaming client for Android.
"[yasea] is being sponsored by the following tool; please help to support us by taking a look a ...
- android蓝牙hfp client使用例
1.首先确认配置文件是否开启hfp profile功能.根据设备的角色(hfp client / hfp server)来配置hfp profile. profile 配置文件路径: ...
- Android开源项目
阿里巴巴 项目名称 功能描述 freeline Freeline 是 Android 平台上的秒级编译方案,Instant Run 的替代品,也可以从 Freeline 官方主页来获取更多的信息.Fr ...
- Android 开发者必知的开发资源
英文原文:Bongzimo 翻译: ImportNew-黄小非 译文链接:http://www.importnew.com/3988.html Android 开发者必知的开发资源 随着Androi ...
- 推荐一些顶级的Android开发书籍(转)
本帖对Android开发菜鸟和中级老兵同样适用,因为本帖重点列出了那些最常用的Android开发资源. 推荐书籍 你或许觉得,都现在了,再去看个什么书来学习Android开发,这方法应该早就过时了.没 ...
- 巧妙设置Android来方便管理Linux和Windows
前几天晚上睡觉前没事,想了想如何实现用Android手机来管理Linux和Windows,比如连接到Linux的SSH(Secured Shell)和连接到Windows的cmd(直接访问PowerS ...
- 安卓samba软件_Android Samba Client
Android Samba Client 介绍 Android Samba Client This application allows users to mount an SMB file shar ...
- 给 Android 初学者的 Gradle 知识普及
1. 前言 前一段时间有人在我的邪教群里问「刚学 Android 不久,对 Gradle 不懂,看了很多资料依然一知半解,希望张哥给讲讲 Gradle 」,没想到群里很多人都响应,表示同感,有人在群里 ...
最新文章
- C/S架构程序多种类服务器之间实现单点登录(转)
- 动态调频DVFS_转
- 因不满被拒,研究员公开 IBM 企业安全软件中的4个 0day
- 巧用 Nginx 快速实现 HTTPS 双向认证
- POJ-1328(Greedy,Vector,Sort,Iterator)
- 有哪些好用的云盘软件?2022不限速云盘网盘推荐
- 限制计算机用户使用指定软件,电脑使用时间限制软件(Time Boss)
- linux下解决QT不能使用搜狗输入法
- JavaSE_05【数组】拓展练习
- SHELL脚本下获取文件时间转换时间戳,使用时间戳计算日期差
- Recovery 恢复
- strcmp函数的分析及实现
- 王道书P41 T24(单链表实现)
- 在root目录下npm install报错Error: EACCES: permission denied, mkdir ‘/root/ttt/web/node_modul
- 百度名词~杂篇--(对日常遇到事物的深入了解)
- R使用LASSO回归预测股票收益
- 20172305 2017-2018-2 《程序设计与数据结构》实验二报告
- winds配置nginx反向代理和负载均衡
- 常用的计算机杀毒软件图标,杀毒软件都有哪些,它们的图标是什么样子的?
- 7月30日云栖精选夜读 | 王坚博士:进入空气稀薄地带