- 博客(321)
- 资源 (24)
- 收藏
- 关注
原创 面向对象六大原则
本文出自《Android源码设计模式解析与实战》中的第一章。 1、优化代码的第一步——单一职责原则单一职责原则的英文名称是Single Responsibility Principle,简称SRP。它的定义是:就一个类而言,应该仅有一个引起它变化的原因。简单来说,一个类中应该是一组相关性很高的函数、数据的封装。就像秦小波老师在《设计模式之禅》中说的:“这是一个备受争议却又及其重要的原则。只要你
2015-11-30 00:10:44 42703 37
原创 Android事件总线还能怎么玩?
事件总线还能怎么玩顾名思义,AndroidEventBus ( github链接 )是一个Android平台的事件总线框架,它简化了Activity、Fragment、Service等组件之间的交互,很大程度上降低了它们之间的耦合,使我们的代码更加简洁,耦合性更低,提升了我们的代码质量。但它能做的却不仅限于这些。经过定制,它能完成很多有意思的功能,那么究竟该怎么做呢?就让我们一起往下看吧。
2015-05-04 11:50:17 9018 20
原创 AndroidEventBus ( 事件总线 ) 的设计与实现
AndroidEventBus是一个Android平台的事件总线库, 它简化了Activity、Fragment、Service等组件或者对象之间的交互,很大程度上降低了它们之间的耦合,使得我们的代码更加简洁,耦合性更低,提升我们的代码质量。
2015-03-16 17:32:24 11887 12
原创 Android事件总线 ( AndroidEventBus ) 开源库发布
AndroidEventBus是一个Android平台的事件总线开源库, 它简化了Activity、Fragment、Service等组件之间的交互,很大程度上降低了它们之间的耦合,使得我们的代码更加简洁,耦合性更低,提升我们的代码质量。
2015-02-03 15:32:20 18707 69
原创 Android App内存泄漏自动化分析工具 - MMAT发布
在Android App开发过程中空指针和内存泄漏是影响性能、稳定性的两座大山, Kotlin的出现在很大程度上避免了空指针导致的Crash, 而几年前LeakCanary的出现也大大的提高了Android工程师查找内存泄漏的效率。两年前, 我在初创团队的Android应用质量保障之道 一文中阐述了我们团队如何改造LeakCanary实现自动分析App内存泄漏的方案.通过LeakCanary查找...
2019-08-17 11:04:41 4286 1
原创 初创团队的Android应用质量保障之道
稳定性与内存优化随着Android技术的发展各种开源库层出不穷,开发一个Android应用已经变得容易了很多。然而开发一个商业应用并不是单纯是实现业务需求那么简单,开发完成只是基础,后续还需要经过QA同学的严格测试。然而对于小型创业公司来说,我们并没有BAT等大厂里的测试平台、方案研究员,我们QA资源比较有限,如果将一切发现问题的重担都交给测试部门,不但耗费的测试周期长,而且有一些问题将难以发现。例
2017-06-25 14:22:48 15746 13
原创 Android ButterKnife 的实现思路
Android ButterKnife 的实现思路 本文出自《Android源码设计模式解析与实战》中的第十六章。 在Android开发中,我们为了方便初始化Activity中的各种View,我们可能会使用到Jake Wharton的 ButterKnife库,这个库是针对View、资源id等进行注解的开源库,它能够去除掉一些丑陋不堪的样板式代码,使得我们的代码更加简洁、易于
2016-09-18 11:28:40 10666 6
翻译 单元测试利器-Mockito 中文文档
Mockito库能够Mock对象、验证结果以及打桩(stubbing),是单元测试中mock对象非常重要的开源库
2016-08-05 11:36:20 81370 8
翻译 使用ClassyShark压缩你的项目
最近,我们的项目中用到了一个重要的框架,它为我们的产品提供了一个非常关键的功能。你可以想象一下,这个框架的SDK是相当巨大的,它包含**45K的方法**:这足以使我们的项目(已经用到了Support Library和Play Services)产生使用MultiDex分包的冲动。
2016-03-18 21:54:18 6870
翻译 高效地配置okhttp
当我为[可汗学院](https://www.khanacademy.org/)开发[Android app](https://play.google.com/store/apps/details?id=org.khanacademy.android)的时候,[OkHttp](http://square.github.io/okhttp/)是一个十分有用的第三方库。虽然它的默认设置已经提供了很大的便利,但我们还是采取了
2016-03-18 21:52:50 10463 1
翻译 Android下雪动画的实现
这本是一个愉快的季节,但是,呵呵,胡扯! 因为这篇文章的发表时间是2015年的圣诞节,所以我们需要给Style Android用制造出一些节日气氛。感谢读者们,因为有的读者可能没有在
2016-03-18 21:51:52 9842 4
原创 Android工程师进阶之路 :《Android开发进阶:从小工到专家》上市啦!
写这本书写这本书的念头由来已久了。也许是从我打算写《Android源码设计模式解析与实战》那时起就萌生了这个念头,因为设计模式属于仅次于架构之下的局部战术,阅读这类书籍能够让具备一定工作经验的开发人员提升自己的设计能力,构建更灵活的软件。但是,对于初、中级工程师而言,最重要的还是在于基础知识以及知识广度的掌握上。
2016-03-17 13:11:18 13847 20
原创 Adapter模式实战-重构鸿洋的Android建行圆形菜单
对于很多开发人员来说,炫酷的UI效果是最吸引他们注意力的,很多人也因为这些炫酷的效果而去学习一些比较知名的UI库。而做出炫酷效果的前提是你必须对自定义View有所理解,作为90的小民自然也不例外。特别对于刚处在开发初期的小民,对于自定义View这件事觉得又神秘又帅气,于是小民决定深入研究自定义View以及相关的知识点。本文我们通过重构泓洋的圆形菜单来学习Adapter模式的运用!
2016-03-09 16:58:19 14639 8
翻译 RxJava开发精要8 - 与REST无缝结合-RxJava和Retrofit
在上一章中,我们学习了如何使用调度器在不同于UI线程的线程上操作。我们学习了如何高效的运行I/O任务而不用阻塞UI以及如何运行耗时的计算任务而不耗损应用性能。在最后一章中,我们将创建一个最终版的`真实世界`的例子,用Retrofit映射到远程的API,异步的查询数据,从而不费力的创造一个丰富的UI。
2016-01-13 18:19:09 8054 1
翻译 RxJava开发精要7 - Schedulers-解决Android主线程问题
本章中,我们提升标准看看如何使用RxJava的调度器来处理多线程和并发编程的问题。我们将学习到如何以响应式的方式创建网络操作,内存访问,以及耗时任务。
2016-01-13 18:18:32 13854
翻译 RxJava开发精要6 - 组合Observables
上一章中,我们学到如何转换可观测序列。我们也看到了`map()`,`scan()`,`groupBY()`,以及更多有用的函数的实际例子,它们帮助我们操作Observable来创建我们想要的Observable。
2016-01-13 18:17:49 9351
翻译 RxJava开发精要5 - Observables变换
在上一章中,我们探索了RxJava通用过滤方法。我们学习了如何使用`filter()`方法过滤我们不需要的值,如何使用`take()`得到发射元素的子集,如何使用`distinct()`函数来去除重复的。我们学习了如何使用`timeout()`,`sample()`,以及`debounce()`来利用时间。
2016-01-13 18:16:50 7369
翻译 RxJava开发精要4 - Observables过滤
在上一章中,我们学习了使用RxJava创建一个Android工程以及如何创建一个可观测的列表来填充RecyclerView。我们现在知道了如何从头、从列表、从一个已存在的传统Java函数来创建Observable。
2016-01-13 18:16:09 7153 1
翻译 RxJava开发精要3-向响应式世界问好
在上一章中,我们对观察者模式有个理论上的快速概述。我们也看了从头开始、从列表、或者从已经存在的函数来创建Observables。在本章中,我们将用我们学到的来创建我们第一个响应式Android应用程序。首先,我们需要搭建环境,导入需要的库和有用的库。然后我们将创建一个简单的应用程序,在不同的flavors中包含几个用RxJava填充的RecycleView items。
2016-01-13 11:17:56 6647 2
翻译 RxJava开发精要2-为什么是Observables?
在面向对象的架构中,开发者致力于创建一组解耦的实体。这样的话,实体就可以在不用妨碍整个系统的情况下可以被测试、复用和维护。设计这种系统就带来一个棘手的负面影响:维护相关对象之间的统一。
2016-01-13 11:16:08 7364
原创 打造AbsListView、RecyclerView的通用Adapter
该库用于简化AbsListView类型与RecyclerView的Adapter构建,在ListViewAdapter和RecyclerAdapter封装了固定的业务逻辑,使得用户只需要实现变化的部分即可,简化代码,避免重复的模板代码。
2015-09-29 14:09:46 8380 8
原创 Android动态换肤开源库Colorful发布
最近本人需要用到夜间模式,但是经过一番搜索似乎并没有看到好的开源实现,看到有一个类似的库MultipleTheme,但是需要自定义所有要实现换肤功能的View,感觉比较麻烦。因此本人花了点时间简单弄了一个实现该功能的开源库,命名为Colorful。Colorful是基于Theme,无需重启Activity、无需自定义View,方便的实现日间、夜间模式
2015-09-09 20:26:44 9441 15
翻译 使用Mockito对异步方法进行单元测试
之前我拍着胸脯承诺要维护的我博客,因此才有了这篇文章。但是请忘记我的那些承诺,我今天要写的是关于Mockito,这是一个当你写单元测试时经常会用到的对象Mock框架。
2015-08-03 13:54:05 17026 6
原创 Android系统架构之微服务架构
前段时间我们翻译的《软件架构模式》( 完整书籍的地址 ) 对外发布之后得到了大家的一致好评,书中讲述了五种经典、流行的软件架构模式,同时分析了五种模式的实现、优缺点等,为我们的开发工作提供了很有价值的指导。但是《软件架构模式》的问题
2015-06-01 10:26:27 14701 5
原创 AndroidEventBus V1.0.4版发布啦
新版特性支持Sticky事件;弱引用持有订阅者,无需手动unregister,避免内存泄露。
2015-05-28 08:22:52 4947 6
翻译 Swift Core Graphics教程之Gradients 与 Context
为Xcode 6.3 和 Swift1.2更新欢迎回到我们的Swift核心绘图教程系列!
2015-05-27 08:25:17 4106
原创 Android布局优化之ViewStub、include、merge使用与源码分析
在开发中UI布局是我们都会遇到的问题,随着UI越来越多,布局的重复性、复杂度也会随之增长。 首先用得最多的应该是include,按照官方的意思,include就是为了解决重复定义相同布局的
2015-05-20 12:52:46 39683 29
翻译 Android 如何直播RTMP流
在android上,视频/音频流直播是极少有人关注的一部分。每当我们讨论流媒体,RTMP(Real Time Messaging Protocol)是不可或缺的。RTMP是一个基本的视频/音频直播流协议,但是不幸的是Android标准的VideoView不支持RTMP的播放。
2015-05-14 11:55:37 17240 11
原创 Android应用内社区SDK技术架构浅析
简单来说,友盟的微社区就是一款帮助开发者在应用中快速搭建一个社区( 类似于新浪微博、朋友圈 )的产品。在很多应用中,开发商往往都会需要一个用户之间以及用户与开发商之间互动的社区,用户往往又会在社区里选择赞、评论、关注、转发、发帖等各种互动方式。
2015-05-08 18:11:53 6548 3
原创 开发技术前线 第八期 周报
开发技术前线 第八期 周报Android 领域技术文章Android 进行单元测试难在哪-序自定义DrawablesSupport Libraries v22.1.0检测Android应用的启动与关闭开始学习Material-Design如何在Android上响应各种信息通知iOS 领域技术文章使用Swift自定义ViewController切换效果与动画Swift样式指南:2015年4月更新GC
2015-05-08 12:32:39 2738
原创 NotRxJava懒人专用指南-RxJava的演进过程
这不是一个简单的入门指南,而是告诉你RxJava是如何演变过来的,一步一步教你实现一个简单的RxJava
2015-05-07 10:20:27 6422 3
翻译 软件架构模式之分层架构
对程序员来说很常见一种情况是在没有合理的程序架构时就开始编程,没有一个清晰的和定义好的架构的时候,大多数开发者和架构师通常会使用标准式的传统分层架构模式(也被称为多层架构)——通过将源码模块分割为几个不同的层到不同的包中。不幸的是,这种编码方式会导致一系列没有组织性的代码模块,这些模块缺乏明确的规则、职责和同其他模块之间的关联。这通常被称为架构大泥球。
2015-04-19 23:53:59 44834 9
原创 开发技术前线 第六期
Android 应用性能优化系列那些年我们错过的响应式编程深入理解Content Transition (part 2)Kotlin for Android (III) 扩展函数与默认值功能测试框架 espresso如何在本地搭建一个Android应用crashing跟踪系统-ACRA实现Instagram的Material Design概念设计一个支持多设备的Android参考应用
2015-04-16 22:10:13 2753
原创 Android开发技术前线 (android-tech-frontier) --优质技术文章的聚合项目
Android开发技术前线 ( android-tech-frontier )Android开发技术前线一个定期翻译、发布国内外Android优质的技术、开源库、软件架构设计、测试等文章的开源项目,让我们的技术跟上国际步伐。
2015-04-12 18:18:25 7190 10
翻译 FaceBook推出的Android图片加载库-Fresco
FaceBook推出的Android图片加载库-Fresco在Android设备上面,快速高效的显示图片是极为重要的。过去的几年里,我们在如何高效的存储图像这方面遇到了很多问题。图片太大,但是手机的内存却很小。每一个像素的R、G、B和alpha通道总共要占用4byte的空间。
2015-04-08 17:32:43 4685 8
翻译 符合Material Design的抽屉导航效果
现在看来,抽屉式导航[已经成为主流导航模式之一](http://goo.gl/w4FVWS)。尽管广受批评,但我还是很喜欢该样式,因此我决定在我写的几个app上添加这个控件。这篇文章想通过介绍我觉得抽屉式导航有趣的地方,帮助阅读本文的 Android 开发者们学习到一些知识,同时从其他人的评论中学习到更多的东西.
2015-04-08 17:29:56 5930 5
AndroidEventBus Jar
2015-02-09
AndroidEventBus事件总线框架
2015-02-05
基于Qt4实现的视频播放器源码
2013-05-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人