测试身边故事系列: 你想过registerReceiver会让你卡死么?

利用Runloop+堆栈获取,已经成为android开发解决外网卡顿问题的常识了,什么blockcanary之类开源工具也是一大堆。但是确非常少人,说说发现了什么问题,解决了什么问题。但是最近在看开发写的“Runloop监控+获取堆栈”,发现各种bug, “finishActivity”也会卡住主线程400~500ms,真心有种"当黑的话,在家里都会被雨淋的赶脚。"

这里,我们不妨看下, registerReceiver都干了什么。

截图来自Android应用程序注册广播接收器(registerReceiver)的过程分析

看起来没什么问题呢?但是如果注意的话,proxy?service?对,也许问题就在这里了。我们看下android的源码。这里可以看到一个很关键的掉用mRemote.transact。这是什么玩样呢?

其实就是一次RPC调用(Remote Procedure Call), 这个东西的耗时真的是有无限的潜力。不过秉承怀疑精神,不多测试下,我都不相信自己。另外有一个值得考量的,RPC的性能究竟有什么影响因素呢。后面我会详细研究下。

推荐阅读更多精彩内容