Android 性能优化--卡顿,ANR ,方法耗时监测

Android ANR深度解析与性能优化实践
本文详细介绍了Android应用程序无响应(ANR)的常见类型、原理及监控方案,探讨了BlockCanary和watchdog等工具的改进。通过字节码插桩等技术实现精确的性能监控,并提出了线上环境的优化策略,旨在提升Android应用的性能和用户体验。

常见anr

input,点击事件:5秒;
contentprovider:10秒;
Broadcast:前台10秒,后台60秒;
服务 service:前台20秒,后台200秒

原理

埋炸弹和拆炸弹

当启动service的时候,会调用

scheduleCreateService方法创建service
 app.thread.scheduleCreateService(r, r.serviceInfo,
                mAm.compatibilityInfoForPackageLocked(r.serviceInfo.applicationInfo),
                app.repProcState);

在创建过程中,利用handler发送延时消息,预埋炸弹

mAm.mHandler.sendMessageDelayed(msg, proc.execServicesFg ? SERVICE_TIMEOUT : SERVICE_BACKGROUND_TIMEOUT);

如果在延时时间内完成对应的操作,则handler会移除掉刚才的延时消息,拆除炸弹

mAm.mHandler.removeMessages(ActivityManagerService.SERVICE_TIMEOUT_MSG, r.app);

这种利用handler的延迟消息,埋炸弹和拆炸弹的设计思想,可以在日常开发中使用和借鉴。如watchdog就是使用该原理实现的

如果在规定的时间内炸弹没有被拆除,则会执行系统的appNotResponding方法,搜集当前堆栈信息,打印到控制台和写

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值