我是靠谱客的博主 愉快天空,最近开发中收集的这篇文章主要介绍Android应用ANR如何分析Android应用卡死如何分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Android应用卡死如何分析

Android应用在使用过程中,常常会出现应用卡死无响应的情况,那么针对此类的问题,我们应该怎么去分析呢?

应用ANR的几种类型

首先,我们需要明确,应用发生ANR类问题,其原因可能是应用自身的问题,也可能是系统侧问题,也有可能是测试工具引发的。举个栗子,我们在测试稳定性的时候,拉起的Activity都是随机的,但是有些Activity的拉起是需要前一个页面参数的,若直接拉起,就会出现应用ANR问题,这样的问题就不能归结于应用,而属于Monkey特有问题归类,其他类问题比如因虚拟机重启导致的故障,又可以归类为系统自身问题,所以明确ANR类问题的界定及分析方法,有助于我们快速界定问题种类,从而简化开发的工作量。

那么ANR类问题在哪些场景下会触发呢?

应用层:
1、应用主线程阻塞
2、应用Activity切换超时
3、焦点窗口异常(系统侧也会出现此类问题)

系统侧:
1、系统线程异常
2、Binder线程、系统探针异常

上面这些只是简单罗列出目前ANR常见的几类问题,那么我们就以上几类问题先来简单分析下ANR类问题应该如何分析。

1、应用主线程阻塞

应用主线程我们有时也称之为“UI线程”,这个比较简单,我们在分析应用的时候,根据日志中ANR时间点找到对应线程,查看应用的线程此时在做什么操作,如果发现此时的线程正在处理一个消息,而却一直没有完成,就会出现应用ANR。分析的思路就是先确定问题发生时间点,然后去确定主线程,看看此时主线程是否有异常

2、应用Activity切换超时

关于应用Activity切换的问题,这类问题也是同样的思路,先根据日志找到问题发生的时间点,然后找到对应的对应的包名、进程号、正在处理的事件,以及处理时长,根据上面的信息来判断是处于那种情况下的切换导致Activity切换过长导致的ANR

3、应用窗口异常

窗口异常问题更容易分析,从日志中我们可以清晰的看到有“not focus on window”的字段,还是根据应用包名,进程ID来判断首先是否是应用自生的问题,是则进行深入分析,看下是在哪个页面触发了此类场景

4、应用锁

最后我们在来看下应用锁的问题,这类问题在ANR中也非常常见,在日志中我们可以搜索“waiting to lock”的字段,这类问题我们在分析的时候,关注喜爱Binder对端调用栈的信息,以此来分析是应用的哪个线程在等待什么锁,又是什么线程在持有这把锁

这里先简单的梳理下我们在遇到ANR类问题的一点分析思路,后续我们在从实例中分析ANR类问题。

最后

以上就是愉快天空为你收集整理的Android应用ANR如何分析Android应用卡死如何分析的全部内容,希望文章能够帮你解决Android应用ANR如何分析Android应用卡死如何分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部