技术男的后花园

专注 Android Java 技术分享

排序:
默认
按更新时间
按访问量

Android 性能监控系列一(原理篇)

一. 前言 性能问题是导致 App 用户流失的罪魁祸首之一,如果用户在使用我们 App 的时候遇到诸如页面卡顿、响应速度慢、发热严重、流量电量消耗大等问题的时候,很可能就会卸载掉我们的 App。而往往获取用户的成本是高昂的,因此因为性能问题导致用户流失的情况是我们要极力避免的,做不好这一点是...

2018-06-05 15:26:28

阅读数:74

评论数:0

安居客Android项目架构演进

本文已授权微信公众号 AndroidDeveloper 独家发布。 入职安居客三年从工程师到 Team Leader,见证了 Android 团队一路走来的发展历程。因此有心将这些记录下来与大家分享,也算是对自己三年来一部分工作的总结。希望对大家有所帮助,更希望能得到大家宝贵的建议。三网合并三年前...

2017-02-27 14:25:58

阅读数:17718

评论数:29

我们和优秀工程师的差距在哪儿

关注微信公众号:BaronTalk,获取更多精彩好文。 我相信每个工程师都曾怀揣一个成为技术大牛的梦想,可是真正走向技术大牛这条路的少之又少。工作中我们常常会发现,有些同学工作没几年但成长迅速;很快就能走向团队核心岗位,成为一名优秀的工程师;而有些同学工作几年后却在公司里默默无闻,能...

2018-04-25 15:29:49

阅读数:33

评论数:0

写给 Android 应用工程师的 Binder 原理剖析

刚刚开通了微信公众号:BaronTalk,之前专栏上的文章也陆续完成了搬迁。后续会持续保质保量的输出,关注一下吧!!! :-) 一. 前言 这篇文章我酝酿了很久,参考了很多资料,读了很多源码,却依旧不敢下笔。生怕自己理解上还有偏差,对大家造成误解,贻笑大方。又怕自己理解不够透彻,无...

2018-04-10 23:03:21

阅读数:39

评论数:0

Android 模块化探索与实践

本文首发于《程序员》杂志五月刊,此版本有部分纠错与调整 一、前言万维网发明人 Tim Berners-Lee 谈到设计原理时说过:“简单性和模块化是软件工程的基石;分布式和容错性是互联网的生命。” 由此可见模块化之于软件工程领域的重要性。从 2016 年开始,模块化在 Android 社区越来越多...

2017-05-06 00:00:44

阅读数:1135

评论数:1

Android WebView那些坑之上传文件

解决问题之前我们先来说说`WebView`上传文件的逻辑:当我们在Web页面上点击选择文件的控件(`<input type="file">`)时,会回调`WebChromeClient`下的`openFileChooser()`(5.0及以上系统回调`onShowF...

2017-03-02 16:09:53

阅读数:1805

评论数:1

神兵利器Dagger2

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

2017-03-02 15:51:49

阅读数:7893

评论数:1

在Android项目中使用Java8

之前由于Android平台不支持Java8,如果我们想在Android项目中使用Lambda表达式、Stream API等Java8中的新特性就必须使用Retrolambda、Lightweight-Stream-API等第三方开源库来实现。现在Google爸爸终于让Android平台支持Java...

2017-03-02 15:47:07

阅读数:1077

评论数:0

Java8新特性第3章(Stream API)

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

2017-03-02 15:45:57

阅读数:416

评论数:0

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

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

2017-03-02 15:44:12

阅读数:392

评论数:0

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

我们通过三篇文章来一起探索下Java8的新特性

2017-03-02 15:41:12

阅读数:344

评论数:0

设计模式之观察者模式

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

2017-03-02 15:35:01

阅读数:705

评论数:0

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

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

2017-03-02 15:21:46

阅读数:1275

评论数:0

RxJava系列7(最佳实践)

这篇文章只是简单的通过两个例子介绍了RxJava在生产环境中的使用。不过本篇中的每个例子我都配上了完整的代码。 > 按照计划这一期是要介绍RxJava框架结构和设计思想的,但是考虑到Netflix将在十月底发布RxJava2.0正式版;因此决定将RxJava框架结构和设计思想分析放到2.0...

2017-03-02 15:20:30

阅读数:782

评论数:0

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

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

2017-03-02 15:15:20

阅读数:756

评论数:0

RxJava系列5(组合操作符)

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

2017-03-02 15:11:39

阅读数:1552

评论数:0

RxJava系列4(过滤操作符)

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

2017-03-02 13:32:22

阅读数:1394

评论数:0

RxJava系列3(转换操作符)

前面两篇文章中我们介绍了RxJava的一些基本概念和RxJava最简单的用法。从这一章开始,我们开始聊聊RxJava中的操作符Operators。

2016-10-27 11:53:18

阅读数:1077

评论数:1

RxJava系列2(基本概念及使用介绍)

上一篇的示例代码中大家一定发现了Observable这个类。从纯Java的观点看,Observable类源自于经典的观察者模式。RxJava的异步实现正是基于观察者模式来实现的,而且是一种扩展的观察者模式。

2016-10-27 11:46:34

阅读数:951

评论数:0

RxJava系列1(简介)

提升开发效率,降低维护成本一直是开发团队永恒不变的宗旨。近一年来国内的技术圈子中越来越多的开始提及Rx,经过一段时间的学习和探索之后我也深深的感受到了RxJava的魅力。它能帮助我们简化代码逻辑,提升代码可读性。这对于开发效率的提升、后期维护成本的降低帮助都是巨大的。个人预测RxJava一定是20...

2016-10-27 10:55:17

阅读数:1315

评论数:3

提示
确定要删除当前文章?
取消 删除
关闭
关闭