遇到ANR问题的处理步骤

问题描述

开发中难免会遇到ANR的问题,遇到ANR问题不要想着是因为设备的卡顿出现的问题,我们无法解决,我们应先找到导致ANR的原因,分析原因之后,再来判断这个问题可不可以解决。

找出原因的方法

第一步:查看log日志文件
先查看日志文件,在文件中搜索ANR字符,找到下面这句话

ANR in com.dream.ebag.recitetext (com.dream.ebag.recitetext/.activity.MainActivity)

看后面的包名,如果包名你应用的,那么说明导致ANR的原因是在你自己的代码里,所以需要着手去处理它。
在日志中,我们还会发现下面这一句

Wrote stack traces to '/data/anr/traces.txt'

将ANR的问题写入了trances.txt文件中,接着我们就去获取trances.txt文件。
第二步:获取/data/src/traces.txt文件
使用adb命令来获取traces.txt文件。
命令步骤如下:

  • adb shell
    进入手机
  • cd data/anr
    进入anr文件夹
  • ll
    查看所有的anr文件
  • adb shell (Ctrl + D)
    退出手机
  • adb pull /data/anr/traces.txt
    导出trances文件。其中trances.txt是你想要导出的trances文件的名称。

完成之后就可以在C:\User\用户名 目录下找到导出的文件。

第三步:分析traces.txt文件

打开trances.txt文件。从前往后看,查看到如下内容:

DALVIK THREADS (25):
"main" prio=5 tid=1 Suspended
| group="main" sCount=1 dsCount=0 obj=0x73edeee8 self=0xaad7ef50
| sysTid=12250 nice=0 cgrp=default sched=0/0 handle=0xf7291bec
| state=S schedstat=( 16245919762 711523055 2436 ) utm=1607 stm=17 core=0 HZ=100
| stack=0xff1d3000-0xff1d5000 stackSize=8MB
| held mutexes=
at java.lang.Character.isDigit(Character.java:2658)
======================================查看重点===========================================
at com.dream.ebag.recitetext.utils.StringUtils.getSpell(StringUtils.java:270)
at com.dream.ebag.recitetext.utils.HanziUtils.LD(HanziUtils.java:100)
at com.dream.ebag.recitetext.fragment.TryReciteFragment.onResults(TryReciteFragment.java:885)
======================================查看重点===========================================
at android.speech.SpeechRecognizer$InternalListener$1.handleMessage(SpeechRecognizer.java:456)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke!(Native method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)

可以找到导致ANR是在自己应用的哪个类,哪行代码。

解决问题

这个步骤就只能具体问题具体分析了,去自己的代码里找到trances.txt文件中指向的那一行,分析问题之后,使用合适的方法解决。

遇到ANR问题的处理步骤的更多相关文章

  1. Android log 日志分析

    一. Log 日志中 Bug 类型 程序异常强制关闭: Force Close ,Fatal 程序无响应: Application Not Response , ANR(应用无响应).一般是主线程超时 ...

  2. 如何分析解决Android ANR

    来自: http://blog.csdn.net/tjy1985/article/details/6777346 http://blog.csdn.net/tjy1985/article/detail ...

  3. 【转】如何分析解决Android ANR

    来自: http://blog.csdn.net/tjy1985/article/details/6777346 http://blog.csdn.net/tjy1985/article/detail ...

  4. Android ANR、Force Closed(转)

    ANRs (“Application Not Responding”),意思是”应用没有响应“. 在如下情况下,Android会报出ANR错误: – 主线程 (“事件处理线程” / “UI线程”) 在 ...

  5. ANR的一个实例分析

    ANR是android经常出的超时提示,以前看过一个帖子,内容是mediaplayer在release的时候出的ANR,作者也是出了方法,什么加handler之类的. 最后都么有解决,咱们先看看那位同 ...

  6. Android_app项目开发步骤总结

    做了几个android企业应用项目后,总结了项目的基本开发步骤.希望可以交流. 一 应用规划:      ※确定功能.      ※必须的界面及界面跳转的流程.      ※须要的数据及数据的来源及格 ...

  7. [转]ANR问题分析指南

    引言 每天收到无数的兄弟团队的同事向系统转ANR JIRA,有些一旦遇到App ANR就直接转到系统组,有些简单看一下就转到系统组帮忙看一下.如此浩瀚的JIRA,我们什么事不做也处理不过来,请每个Ap ...

  8. Android ANR(应用无响应)解决分析【转】

    本文转载自:https://blog.csdn.net/u014630142/article/details/81709459 来自: http://blog.csdn.net/tjy1985/art ...

  9. 如何分析解决Android ANR(转载)

    转载自:http://blog.csdn.net/dadoneo/article/details/8270107 一:什么是ANR ANR:Application Not Responding,即应用 ...

随机推荐

  1. centos 上docker 运行出现/bin/sh: . not found

    本人用的是Linux上的编译的....然后用了win上的编译命令 解决办法 : 用Linux上的编译命令.....    CGO_ENABLED=0 GOOS=linux GOARCH=amd64 g ...

  2. NC 数据库操作

    一.后台数据库操作方法(private端): 1.以下为后台查询方法 BaseDAO dao = new BaseDAO();//只能在private端使用 String querySql=" ...

  3. SOP - Validation

    Table of Contents目录表1 Roles and Responsibilities related to validation与验证相关的1个角色和职责2 Introduction2引言 ...

  4. mysql的orde by 按照指定状态顺序排序

    要求按照以下顺序排序 审核中->审核拒绝->待放款->放款失败->待还款->已结清->已逾期 { id:80, label:'审核中'},{ id:100, lab ...

  5. 【转】Android总结篇系列:Activity生命周期

    [转]Android总结篇系列:Activity生命周期 Android官方文档和其他不少资料都对Activity生命周期进行了详细介绍,在结合资料和项目开发过程中遇到的问题,本文将对Activity ...

  6. Java中子类对象初始化的过程

    Java中的继承机制看似简单,实际上包含了很多细节.最近在刷题过程中屡屡跳坑,于是自己仔细再学习了一下Java中子类初始化的细节,与大家分享. class Father { Father(){}; } ...

  7. 大前端学习笔记【七】关于CSS再次整理

    如果你在日常工作中使用 CSS,你的主要目标可能会重点围绕着使事情“看起来正确”.如何实现这一点经常是远不如最终结果那么重要.这意味着比起正确的语法和视觉结果来说,我们更少关心 CSS 的工作原理. ...

  8. C++矩阵加速经典题目:Warcraft III 守望者的烦恼 [vijos 1067]

    Warcraft III 守望者的烦恼 背景 守望者-warden,长期在暗夜精灵的的首都艾萨琳内担任视察监狱的任务,监狱是成长条行的,守望者warden拥有一个技能名叫"闪烁", ...

  9. linux时区和时间设置

    1,修改时区 调整时区使用tzselect [root@lyn ~]# hwclock Tue Nov :: PM AST -0.198205 seconds [root@lyn ~]# tzsele ...

  10. Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings

    Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings 题目连接: http://cod ...