关闭

[置顶] Android 模块化探索与实践

本文首发于《程序员》杂志五月刊,此版本有部分纠错与调整 一、前言万维网发明人 Tim Berners-Lee 谈到设计原理时说过:“简单性和模块化是软件工程的基石;分布式和容错性是互联网的生命。” 由此可见模块化之于软件工程领域的重要性。从 2016 年开始,模块化在 Android 社区越来越多的被提及。随着移动平台的不断发展,移动平台上的软件慢慢走向复杂化,体积也变得臃肿庞大;为了降低大型软件复...
阅读(713) 评论(1)

[置顶] 安居客Android项目架构演进

本文已授权微信公众号 AndroidDeveloper 独家发布。 入职安居客三年从工程师到 Team Leader,见证了 Android 团队一路走来的发展历程。因此有心将这些记录下来与大家分享,也算是对自己三年来一部分工作的总结。希望对大家有所帮助,更希望能得到大家宝贵的建议。三网合并三年前入职时安居客在业务上刚完成了三网合并(新房、二手房、好租和商业地产多个平台多个网站合成现在的 anjuk...
阅读(14900) 评论(28)

Android WebView那些坑之上传文件

解决问题之前我们先来说说`WebView`上传文件的逻辑:当我们在Web页面上点击选择文件的控件(``)时,会回调`WebChromeClient`下的`openFileChooser()`(5.0及以上系统回调`onShowFileChooser()`)。这个时候我们在`openFileChooser`方法中通过`Intent`打开系统相册或者支持该`Intent`的第三方应用...
阅读(1567) 评论(1)

神兵利器Dagger2

Dagger-匕首,鼎鼎大名的Square公司旗下又一把利刃(没错!还有一把黄油刀,唤作ButterKnife);故此给本篇取名神兵利器Dagger2。Dagger2起源于Dagger,是一款基于Java注解来实现的完全在编译阶段完成依赖注入的开源库,主要用于模块间解耦、提高代码的健壮性和可维护性。Dagger2在编译阶段通过apt利用Java注解自动生成Java代码,然后结合手写的代码来自动帮我们...
阅读(7646) 评论(1)

在Android项目中使用Java8

之前由于Android平台不支持Java8,如果我们想在Android项目中使用Lambda表达式、Stream API等Java8中的新特性就必须使用Retrolambda、Lightweight-Stream-API等第三方开源库来实现。现在Google爸爸终于让Android平台支持Java8了,这篇文章中便来和大家聊聊如何在Android项目中配置使用Java8。...
阅读(730) 评论(0)

Java8新特性第3章(Stream API)

Stream作为Java8的新特性之一,他与Java IO包中的InputStream和OutputStream完全不是一个概念。Java8中的Stream是对集合功能的一种增强,主要用于对集合对象进行各种非常便利高效的聚合和大批量数据的操作。结合Lambda表达式可以极大的提高开发效率和代码可读性。...
阅读(281) 评论(0)

Java8新特性第2章(接口默认方法)

在Java中一个接口一旦发布就已经被定型,除非我们能够一次性的更新所有该接口的实现,否者在接口的添加新方法将会破坏现有接口的实现。默认方法就是为了解决这一问题的,这样接口在发布之后依然能够继续演化。...
阅读(279) 评论(0)

Java8新特性第1章(Lambda表达式)

我们通过三篇文章来一起探索下Java8的新特性...
阅读(242) 评论(0)

设计模式之观察者模式

场景我们接到一个来自气象局的需求:气象局需要我们构建一套系统,这系统有两个公告牌,分别用于显示当前的实时天气和未来几天的天气预报。当气象局发布新的天气数据(WeatherData)后,两个公告牌上显示的天气数据必须实时更新。气象局同时要求我们保证程序拥有足够的可扩展性,因为后期随时可能要新增新的公告牌。...
阅读(611) 评论(0)

RxJava系列番外篇:一个RxJava解决复杂业务逻辑的案例

之前写过一系列RxJava的文章,也承诺过会尽快有RxJava2的介绍。无奈实际项目中还未真正的使用RxJava2,不敢妄动笔墨。所以这次还是给大家分享一个使用RxJava1解决问题的案例,希望对大家在使用RxJava的时候有一点点启发。...
阅读(754) 评论(0)

RxJava系列7(最佳实践)

这篇文章只是简单的通过两个例子介绍了RxJava在生产环境中的使用。不过本篇中的每个例子我都配上了完整的代码。 > 按照计划这一期是要介绍RxJava框架结构和设计思想的,但是考虑到Netflix将在十月底发布RxJava2.0正式版;因此决定将RxJava框架结构和设计思想分析放到2.0正式版发布后再做。后续我也会有一系列的文章来介绍RxJava1.x和2.x的区别。...
阅读(665) 评论(0)

RxJava系列6(从微观角度解读RxJava源码)

通过前面五个篇幅的介绍,相信大家对RxJava的基本使用以及操作符应该有了一定的认识。但是知其然还要知其所以然;所以从这一章开始我们聊聊源码,分析RxJava的实现原理。本文我们主要从三个方面来分析RxJava的实现: * RxJava基本流程分析 * 操作符原理分析 * 线程调度原理分析 > 本章节基于**RxJava1.1.9**版本的源码...
阅读(656) 评论(0)

RxJava系列5(组合操作符)

这一章我们接着介绍组合操作符,这类operators可以同时处理多个Observable来创建我们所需要的Observable。组合操作符主要包含: **`Merge`** **`StartWith`** **`Concat`** **`Zip`** **`CombineLatest`** **`SwitchOnNext`** **`Join`**等等。...
阅读(637) 评论(0)

RxJava系列4(过滤操作符)

前面一篇文章中我们介绍了转换类操作符,那么这一章我们就来介绍下过滤类的操作符。顾名思义,这类operators主要用于对事件数据的筛选过滤,只返回满足我们条件的数据。过滤类操作符主要包含: **`Filter`** **`Take`** **`TakeLast`** **`TakeUntil`** **`Skip`** **`SkipLast`** **`ElementAt`** **`Debounce`** **`...
阅读(716) 评论(0)

RxJava系列3(转换操作符)

前面两篇文章中我们介绍了RxJava的一些基本概念和RxJava最简单的用法。从这一章开始,我们开始聊聊RxJava中的操作符Operators。...
阅读(965) 评论(1)
17条 共2页1 2 下一页 尾页
    个人资料
    • 访问:34076次
    • 积分:496
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:0篇
    • 译文:0篇
    • 评论:35条
    博客专栏
    文章分类
    最新评论