微信Android客户端后台保活经验分享

2016 年 4 月 07 日

本文为『移动前线』群在 3 月 31 日的分享总结整理而成,转载请注明来自『移动开发前线』公众号。

嘉宾介绍

杨干荣,微信 Android 客户端基础平台、性能优化负责人

保活,按照我们的理解包含两部分:

网络连接保活:如何保证消息接收实时性。

进程保活:尽量保证应用的进程不被 Android 系统回收。

1.0 网络连接保活

网络保活,业界主要手段有:

a. GCM

b. 公共的第三方 push 通道 (信鸽等)

c. 自身跟服务器通过轮询,或者长连接

国产机器大多缺乏 GMS,在国内 GCM 也不稳定 (心跳原因),第三方通道需要考虑安全问题和承载能力,最后微信选择使用自己的长连接。而国外, GCM 作为辅助,微信无法建立长连接时,才使用 GCM。

之前看到大家在聊各种 Java 网络框架,而微信实际上都是没用上的。早年的微信,直接通过 Java socket 实现。微信 v5.0 后,考虑各系统平台的统一,开始使用自研 c++ 组件。

长连接实现包括几个要素:

a. 网络切换或者初始化时 server ip 的获取。

b. 连接前的 ip 筛选,出错后 ip 的抛弃。

c. 维护长连接的心跳。

d. 服务器通过长连 notify。

e. 选择使用长连通道的业务。

f. 断开后重连的策略。

今天主题在保活, 我们重点讨论心跳和 notify 机制。

原文链接:【 https://www.infoq.cn/article/wechat-android-background-keep-alive 】。未经作者许可,禁止转载。

登录后可解锁全站优质内容

免费畅享技术公开课、顶尖技术团队访谈、一线互联网大厂技术实践

文章
视频
电子书
研究报告
立即登录
2016 年 4 月 07 日 17:31 18920

评论

发布
暂无评论
发现更多内容

团队与领导力健康检查 | 体检表

Bob Jiang

团队建设

为什么第三方联调应该先行?

大伟

Python deepcopy一个优化

么么哒

Python

写给产品经理的信(5):谈谈项目管理(青铜-王者)

夜来妖

产品 极客时间,项目管理 项目管理 产品经理 项目

机器学习项目是如何开发和部署的?

陆道峰

人工智能 机器学习

一款开源且具有交互视图界面的实时 Web 日志分析工具!

JackTian

开源 GoAccess 实时 Web 日志分析工具 交互式查看器

互联网省份数据大揭秘,看看哪些地方是互联网的戈壁滩?

非著名程序员

程序员 互联网 IT

这场大数据+AI Meetup,一次性安排了大数据当下热门话题

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

gmail 被停用如何解封?

lmymirror

gmail 技巧

为什么要学习 Markdown?究竟有什么用?

JackTian

markdown markdown语法 markdown编辑器

做好领路人——写给技术新人的导师建议

南方

管理 新人

券商也“网红”,证券行业IT服务运维发展按下“快进键”

BonreeAPM

运维 APM 证券 券商 行情

游戏夜读 | 改写图形API的意义

game1night

HTML中实现合并单元格

JDoe

html

偏头疼告诉我的,我想告诉每一个人

zkback

探索 Go 语言数据类型的内部实现

TuringTuring

golang 内存模型 高效

一个在游戏行业摸爬滚打了十几年的人,为何我对这本书情有独钟

图灵社区

游戏开发 游戏制作 世嘉培训教材

GitHub 上十个好用的软件

彭宏豪95

GitHub 效率 工具

关于软件测试的三点思考

卓然

软件测试 测试 测试的价值 联现技术咖

git | IDEA 中如何压缩提交(压缩commit后再push 图文演示)

YoungZY

开发者工具 IDEA 开发工具

前端工程化之创建项目

春生

前端 前端工程 前端架构 全栈工程师

地铁上看书的老外引发的思考

小天同学

写作 读书 个人感想 日常思考

原创 | 使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (十一)JUnit概述

编程道与术

Java 编程 软件测试 TDD 单元测试

重学 Java 设计模式:实战原型模式

小傅哥

Java 设计模式 小傅哥 复杂代码优化 重构

“新基建”方兴未艾,Smartbi Mining如何为产业数字化转型赋能?

infoq小陈

自定义构造python白名单__builtins__

么么哒

Python

写代码没几天,遇到一堆报错,我该怎么办

刘早起😶

Python 程序人生 程序员成长

如何设计数据中台

WindyQin

大数据 数据中台 数据仓库

Server Queue 提高 QPS

风含叶

Python kafka 后端 队列

最香远程开发解决方案!手把手教你配置VS Code远程开发工具,工作效率提升N倍

柠檬橙

Linux 后台开发 vscode 后端

python实现·十大排序算法之基数排序(Radix Sort)

南风以南

Python 排序算法 基数排序

微信Android客户端后台保活经验分享-InfoQ