编程技术分享平台

网站首页 > 技术教程 正文

Android面试--什么是ANR以及如何定位解决相应的问题

xnh888 2025-01-04 23:51:45 技术教程 33 ℃ 0 评论

ANR(Application Not Responding)主要是由于耗时操作长时间阻塞主线程导致应用无法及时响应所致。由于ANR的错误信息不像crash信息那样可以在应用内直接捕获,所以在定位解决问题时比较棘手。

ANR的错误信息都记录/data/anr目录下的Trace文件当中。但是该文件读取有权限限制,非系统级权限无法获取,所以无法直接通过读取该文件来定位错误信息。但可以通过native c代码监测系统发送的SIGQUIT信号,然后hook系统的trace文件写入函数,拦截相应内容来间接实现ANR错误信息的捕获。也可以引入第三方库来捕获,当然,第三方库基本也是通过该原理来实现。

在应用的开发调试阶段,也可以通过设置StrictMode并结合Profiler工具来分析代码相应的潜在风险,通过优化卡顿等性能问题来最大限度的规避发生ANR的风险。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表