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

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

常见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的延迟消息,埋炸

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值