博客

可变计划与信息通道

最近读吴军博士的《硅谷之谜》与《数学之美》,读到有关三论(控制论、信息论、系统论)的一些观点,有两点启发。
阅读全文

2016年8月22日

 

使用DiffUtil高效更新RecyclerView

DiffUtil是recyclerview support library v7 24.2.0版本中新增的类,用于比较两个数据列表,能计算出一系列将旧数据表转换成新数据表的操作,可用于高效更新RecyclerView。
阅读全文

2016年8月22日

 

好码如文档,不言自明

强大的功能,需要好的代码去支撑。代码质量带来的是长期的效益。那么好的代码有什么特性?怎样写出好的代码?
阅读全文

2016年8月20日

 

从零到一发布Android开源库

本文意在提供发布Android开源库一条龙教程。库的重点是代码,发布是个必须的过程。希望能帮助你将精心打造的库很快的开源出去。
阅读全文

2016年8月1日

 

不要再给MVP中Prensenter写接口了

有关MVP具体如何设计相关问题一直有讨论。Google的做法是为Presenter和View都设计接口,并写在一个协议类中。总的来说,不论是否以协议类的方式呈现,现在开发者喜欢让Presenter继承接口。而本文观点相反,希望能带给开发者思考。
阅读全文

2016年7月13日

 

为什么Android开发者应该使用FlatBuffers替代JSON?

你可能会问,既然我们已经有很标准的JSON以及转换库比如GSON和Jackson,为什么还要使用新的工具呢?本文列举了FlatBuffers的优点与使用厂家,附带一个快速集成库。
阅读全文

2016年7月12日

 

深入浅出RenderThread

RenderThread是Android Lollipop中引入的新组件,相关文档很少。RenderThread是一个由系统控制的处理线程,它可以在UI线程阻塞时保持动画平滑。那么它是如何做到这一点的?我们又能如何利用这个组件呢?
阅读全文

2016年5月25日

 

理解Android命名规范

当你想问“如何获得Context”、“如何在UI线程上进行异步任务”或是“为什么要用Fragment”这类问题时,很可能你对Android组件的职责是有误解的。其实想要正确的理解每个组件的职责很容易,因为这个职责就表现在其命名中。本文分析了一些Android核心组件的名称,希望可以帮助你你加深理解。
阅读全文

2016年5月15日

 

使用GCM网络管理工具优化电池使用

网络任务已经成了应用的一大组成部分,在你编写网络代码时,是否考虑过网络请求的耗电问题?事实上,大量的网络请求会频繁唤醒设备,导致电量大幅消耗。本文讲述了如何通过GCM网络管理器来优化电池使用。
阅读全文

2016年5月5日

 

实战Kotlin@Android(一)

实战Kotlin@Android(二)

实战Kotlin@Android(三)

在过去的一年中,在Android开发圈有一个越来越火的话题,就是JetBrains开发的新JVM语言Kotlin。Kotlin能干所有Java能干的(不止),且语法更准确,代码更好看,在IntelliJ和Android Studio中也有很好的支持。我很关心Kotlin可以给Android开发者带来什么,希望能带给大家有用的信息。
阅读全文

2016年4月10日

 

Repository模式

在Android中我们需要将数据存储起来以持久化,大部分情况下我们使用SQLite存储数据。但当你想通过一种简单而只读的方式存储,那该怎么做呢?本文带你一步步构建一个遵从Repository设计模式的ORM。
阅读全文

2016年4月9日

 

我眼中的Android架构

本文从项目架构、开源框架、打包方式等诸多方面出发,较为全面地探讨了如何搭建一个好的Android项目架构。本文同时概述了RxJava/Dagger2等开源框架的优点,希望对你有所帮助。
阅读全文

2016年4月5日

 

从案例学习RxAndroid

RxJava当下在Android开发圈中广受热议,它让开发者以另一种优雅的方式完成异步任务,越来越多的项目开始使用RxJava。而RxJava如何应用到Android应用呢?本文通过几个例子一步步教你如何在项目中使用RxJava,以及RxJava到底能带来哪些不同。

阅读全文

2016年3月31日

 

Android开发心得整理

Abderrazak Laanaya分享了他总结的有关Android开发的心得体会,文章很短,是以条目的形式呈现。可以说每一条心得都源自在他在实际项目中的经验教训,也可以说是源自他踩过的一个个坑。希望对读者有所帮助。

阅读全文

2016年3月26日

 

不再使用Debugger分析数据流

每当某段代码因为接收错误的数据出了bug时,我们一般会打个断点,然后一点一点找。本文分享了更加高效的定位、分析数据流的方法,最大的好处就是不再需要猜数据怎么走了,把这些费时费力的工作都交给IDE完成。

阅读全文

2016年3月21日

 

通过Loader延长Presenter生命周期

有关MVP的核心概念与整体实现早已成型,但一些实现细节仍需讨论。本文讨论了旋转时如何处理Presenter这个问题,总结了多种方案并提出用Loader实现Presenter的缓存。文中阐述了实现的思路并提供了基本的演示代码,希望对你有所启发。

阅读全文

2016年3月12日

 

快速清理应用数据

这次分享的不是技术,而是工具。平时我们经常需要清空应用的数据,不知道你是进入设置界面清空呢,还是在ddms里清空呢,还是索性卸载应用呢?不管怎样,似乎都不够快,这种搬砖的工作最好躺着就能完成。今天就给大家分享这么一个躺着就能清理数据的Android Studio插件,篇幅虽小,干货不少。

阅读全文

2016年3月10日

 

如何设计MVP中的Presentation层

MVP,不是最有价值球员,而是应用架构。全世界都在用MVP,但单单靠将package分开还不能很好地诠释MVP的含义。或许我们在写代码的时候,经常困惑的一个问题就是,到底这几行代码归哪个部分?本文就MVP如何分工进行了讨论,还提出了一些有关架构设计的理念与技巧,希望对你有所帮助。

阅读全文

2016年2月28日

 

深入理解LayoutInflater.inflate()

不论是初学者还是安卓高手都会使用LayoutInflater.inflate()方法,而这个方法却很少引起我们的关注。但当bug真的来临时,我们是否会想到inflate()方法中也有不少坑?这篇文章深入分析了LayoutInflater的inflate()方法,并教给你这个方法的正确使用方式。

阅读全文

2016年2月22日

 

在Android应用中使用Clean架构

搞安卓开发离不开架构,遍地都是MVC、MVP、MVVM,这个Clean架构还是第一次看到,让我有些懵,不过既然是Bob大叔推荐,还是要学习一下搞清楚。这个Clean架构是哪路黑科技?为什么如此牛逼地存在?

阅读全文

2016年2月9日

 

你所不知道的有关Service的10件事

Service可以说是除Activity外最常用的组件了,我们会用Service加载资源、执行后台任务或使用各种服务,但是用对了吗?Service到底是什么?如何优雅的使用Service呢?本文列举了10条有关Service的概念与技巧,帮助你不再滥用Service。

阅读全文

2016年2月8日

 

在Android中解决内存溢出 – OutOfMemoryError

Android应用内存泄露是谁都会遇到的问题,这种错误经常存在,但不容易暴露,暴露了也不容易定位。其实内存泄露一般就那么几种,本文就如何避免内存泄露,如何判断内存泄露以及如何识别内存泄露进行了讲解,配合示例,绝对干货。

阅读全文

2016年2月1日

 

在可滑动列表(ListView & RecyclerView)中实现视频播放

列表从来都是用来显示文字和图片,你想没想过在列表中添加视频?本文就如何实现在列表中播放视频的功能进行了讨论,并包含解决出现的问题的核心代码。更多代码可以再文章内部的github链接中找到。Facebook都用起来的功能,还不学习学习?

阅读全文

2016年1月26日

 

测试机巧 – 你所不知道的测试黑科技

Android单元测试是一门艺术。它容易上手,然而想写出好的测试代码就不是那么容易。
本文就Android单元测试中如何处理实例化,如何处理第三方接口的调用以及如何提高代码可读性进行了讨论。你可能会在这里发现自己代码中存在的问题,如果没有,那就记住这几个技巧,提高代码的姿势水平。
阅读全文

2016年1月23日