本文首发于小专栏《Android 架构之长连接技术》,更多Android架构文章欢迎关注《亿级Android架构

上一篇文章《Android 架构之网络框架(上)》中,我们谈过了网络框架OkHttp、网络加速方案如HttpDNS、数据压缩与序列化等技术点。本文我们结合腾讯Mars框架美团Shark体系等业内主流长连接方案,谈一谈长连接技术的各个方面。

本文会包括下面的技术点:

  • 长连接与Http短连接、Keep-Alive傻傻分不清
  • 你为什么需要长连接
  • 长连接何时会断开
  • 如何建立稳定长连接
  • Mars智能心跳机制
  • 长连接数据协议及加密
  • 长连接通道建设及容灾
阅读全文 »

《亿级 Android 架构》 小专栏地址:https://xiaozhuanlan.com/AndroidArch

各位好,很久没空来写点东西(忙+懒),快年底了,准备抽空写一写。由于今年一直在做一些Android架构方面的工作,所以准备以这个角度为切入点。

本篇文章随谈一些关于Android架构的东西,包括写这个专栏的初衷、具体包括哪些技术点等。

业务同学需要了解架构吗?

有的同学会问,我平常都在写业务代码、写页面、调用SDK,有必要去了解架构吗?答案很简单,业务是表,架构是里。变化万千的业务背后都是大同小异的架构。时代更迭,业务变迁,理解架构的技术人员可以处变不惊,而非疲于奔命。

因此,本人建议业务同学在繁重的业务开发之余,可以多去研究一些底层库原理,而非停留在花式调用SDK的阶段,这会让你具备更强的技术竞争力。

阅读全文 »

很久没抽出时间来写博客了,加入阿里后确实是忙,忙,忙。有不少业务提出的挑战,也有更多个人技术上的追求与挑战。

今天难得周日有空,跑公司找个安静角落,整理下2017年的技术感悟与成长,展望下2018年的规划。

阅读全文 »

背景

在 Android 开发中,我们都很熟悉 Activity 的 Lifecycle,并且会在特定的 Lifecycle 下执行特定的操作。当然,我们清楚 Lifecycle 本身是带有 Android 特质的,那尝试设想下,如果普通的 Java Class 也能自动感知 Lifecycle 呢?咋一听这个想法似乎背后意义不大,但在实际探索中,我们发现这个特性能为我们达成一些之前未考虑到或者不易实现的优化。

本文分享下我们基于这个思想所开发的框架:AutoLifecycle 及其带来的一些有意思的实践。

阅读全文 »

个人博客不仅是个人写作的地方,更是一个展示自己个性、扩大个人影响力的产品。

之前我写过一篇《如何在一天之内搭建以你自己名字为域名且具备cool属性的个人博客》帮助不少人从零开始搭建了自己的博客。而今天想做的是把博客当成个人产品来进行迭代开发,以更好地展示个人形象。

阅读全文 »

垃圾回收机制是 Java 非常重要的特性之一,也是面试题的常客。它让开发者无需关注空间的创建和释放,而是以守护进程的形式在后台自动回收垃圾。这样做不仅提高了开发效率,更改善了内存的使用状况。

今天本文来对垃圾回收机制进行讲解,主要涉及下面几个问题:

  • 什么是堆内存?
  • 什么是垃圾?
  • 有哪些方法回收这些垃圾?
  • 什么是分代回收机制?
阅读全文 »

OOM 是 Android 开发中常见的问题,而内存泄漏往往是罪魁祸首。

为了简单方便的检测内存泄漏,Square 开源了 LeakCanary,它可以实时监测 Activity 是否发生了泄漏,一旦发现就会自动弹出提示及相关的泄漏信息供分析。

本文的目的是试图通过分析 LeakCanary 源码来探讨它的 Activity 泄漏检测机制。

阅读全文 »

类加载机制是 Java 语言的一大亮点,使得 Java 类可以被动态加载到 Java 虚拟机中。

这次我们抛开术语和概念,从例子入手,由浅入深地讲解 Java 的类加载机制。

本文涉及知识点:双亲委托机制、BootstrapClassLoader、ExtClassLoader、AppClassLoader、自定义网络类加载器等

文章涉及代码:
https://github.com/wingjay/HelloJava/blob/master/common/src/classloader/HelloClassLoader.java

阅读全文 »