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相关推荐

  1. Android新浪微博client(七)——ListView图片异步加载、高速缓存

    原文出自:方杰|http://fangjie.sinaapp.com/?p=193 转载请注明出处 终于效果演示:http://fangjie.sinaapp.com/?page_id=54 该项目代 ...

  2. android websocket client 如何调用autobahn.jar

    Android调用  autobahn.jar: 1.下载源码:使用library: https://github.com/tavendo/AutobahnAndroid: 2.编译,得到autoha ...

  3. 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 ...

  4. android蓝牙hfp client使用例

    1.首先确认配置文件是否开启hfp profile功能.根据设备的角色(hfp client / hfp server)来配置hfp profile. profile 配置文件路径:         ...

  5. Android开源项目

    阿里巴巴 项目名称 功能描述 freeline Freeline 是 Android 平台上的秒级编译方案,Instant Run 的替代品,也可以从 Freeline 官方主页来获取更多的信息.Fr ...

  6. Android 开发者必知的开发资源

    英文原文:Bongzimo  翻译: ImportNew-黄小非 译文链接:http://www.importnew.com/3988.html Android 开发者必知的开发资源 随着Androi ...

  7. 推荐一些顶级的Android开发书籍(转)

    本帖对Android开发菜鸟和中级老兵同样适用,因为本帖重点列出了那些最常用的Android开发资源. 推荐书籍 你或许觉得,都现在了,再去看个什么书来学习Android开发,这方法应该早就过时了.没 ...

  8. 巧妙设置Android来方便管理Linux和Windows

    前几天晚上睡觉前没事,想了想如何实现用Android手机来管理Linux和Windows,比如连接到Linux的SSH(Secured Shell)和连接到Windows的cmd(直接访问PowerS ...

  9. 安卓samba软件_Android Samba Client

    Android Samba Client 介绍 Android Samba Client This application allows users to mount an SMB file shar ...

  10. 给 Android 初学者的 Gradle 知识普及

    1. 前言 前一段时间有人在我的邪教群里问「刚学 Android 不久,对 Gradle 不懂,看了很多资料依然一知半解,希望张哥给讲讲 Gradle 」,没想到群里很多人都响应,表示同感,有人在群里 ...

最新文章

  1. C/S架构程序多种类服务器之间实现单点登录(转)
  2. 动态调频DVFS_转
  3. 因不满被拒,研究员公开 IBM 企业安全软件中的4个 0day
  4. 巧用 Nginx 快速实现 HTTPS 双向认证
  5. POJ-1328(Greedy,Vector,Sort,Iterator)
  6. 有哪些好用的云盘软件?2022不限速云盘网盘推荐
  7. 限制计算机用户使用指定软件,电脑使用时间限制软件(Time Boss)
  8. linux下解决QT不能使用搜狗输入法
  9. JavaSE_05【数组】拓展练习
  10. SHELL脚本下获取文件时间转换时间戳,使用时间戳计算日期差
  11. Recovery 恢复
  12. strcmp函数的分析及实现
  13. 王道书P41 T24(单链表实现)
  14. 在root目录下npm install报错Error: EACCES: permission denied, mkdir ‘/root/ttt/web/node_modul
  15. 百度名词~杂篇--(对日常遇到事物的深入了解)
  16. R使用LASSO回归预测股票收益
  17. 20172305 2017-2018-2 《程序设计与数据结构》实验二报告
  18. winds配置nginx反向代理和负载均衡
  19. 常用的计算机杀毒软件图标,杀毒软件都有哪些,它们的图标是什么样子的?
  20. 7月30日云栖精选夜读 | 王坚博士:进入空气稀薄地带

热门文章

  1. linux文件怎么打包压缩文件,linux文件怎么打包、压缩和解压?详细教程来了!...
  2. 每天学点统计学——指数
  3. 在线地图地址3857+4326
  4. 使用PicGo快速搭建图床
  5. Python实战:导出QQ聊天记录生成词云看看你和你的女友聊了什么
  6. java反序列化漏洞POP查找_Laravel8反序列化POP链分析挖掘
  7. 计算机组成原理头歌实验
  8. 5-7 六度空间 (30分)
  9. 搭建Web服务器建网站的步骤
  10. 阿里字体图标库iconfont的使用详解