快速定位Android闪退问题的方法

在Android开发中,遇到应用闪退时,可通过adb logcat命令获取可靠日志,关注Exception来查找未捕获异常,分析ANR是否由于程序响应性问题导致,如输入事件超时或BroadcastReceiver执行过慢,以及排查OOM异常,如Bitmap解码或内存泄露问题,以此迅速定位并解决问题。
摘要由CSDN通过智能技术生成

写Android程序时,经常会遇到各种各样的问题导致应用闪退。下面就来总结下应用闪退时,我们有什么方法去定位问题。

首先我们应该用 adb logcat -v time 命令把日志打印出来,直接用AS的logcat也可以,只是有的时候logcat会出现清空日志的情况,还是adb命令的日志靠谱。

有了日志,可以通过查找以下几个字段来快速定位问题:

  • Exception:查看所有发生异常的地方,看看是不是有没有捕获到的异常。
    例如:下面这个异常就是日志打印出来的一个未捕获的异常,它可以准确地告诉我是哪个类的哪个方法,哪一行出了错误,这样就可以快速找到问题。
08-16 17:27:01.792 E/dalvikvm( 4392): threadid=1: thread exiting with uncaught exception (group=0x40a521f8)
08-16 17:27:01.822 E/System.err( 4392): java.lang.NoSuchMethodError: ****.setBackground
08-16 17:27:01.832 E/System.err( 4392):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:747)
08-16 17:27:01.832 E/System.err( 4392):     at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
08-16 17:27:01.842 E/System.err( 4392):     at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
  • ANR:查看应用是否出现了ANR的情况。
    在Android中,程序的响应性是由Activity Manager与Window Manager系统服务来负责监控的。当系统监测到下面的条件之一时会显示ANR的对话框:
    (1)对输入事件(例如硬件点击或者屏幕触摸事件),5秒内都无响应。
    (2)BroadReceiver不能够在10秒内结束接收到任务。

    例如:下面这个ANR异常就是由于BroadReceiver产生的,其原因是因为CPU占用达到100%出现的,这个时候就要去看下是自己进程的CPU占用率过高,还是别的程序CPU占用率过高。如果是自己的程序,就要看日志,执行了什么操作导致CPU占用率太高。我这里是同时播放很多gif图的时候出现的。

ANR in net.myvst.v2:xg_service_v3
08-16 17:25:22.802 E/ActivityManager( 3705): Reason: Broadcast of Intent { act=android.net.conn.CONNECTIVITY_CHANGE flg=0x10000010 cmp=net.myvst.v2/com.tencent.android.tpush.XGPushReceiver (has extras) }
08-16 17:25:22.802 E/ActivityManager( 3705): Load: 44.05 / 20.02 / 10.34
08-16 17:25:22.802 E/ActivityManager( 3705): CPU usage from 18010ms to 190ms ago:
08-16 17:25:22.802 E/ActivityManager( 3705):   30% 3851/com.vlctech
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值