遇到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. 深入理解HashMap和CurrentHashMap

    原文链接:https://segmentfault.com/a/1190000015726870 前言 Map 这样的 Key Value 在软件开发中是非常经典的结构,常用于在内存中存放数据. 本篇 ...

  2. Android学习(三)

    学号 20189214 <Android程序开发>第八周学习总结 教材学习内容总结 GridView GridView和ListView一样是AbsListView的子类; 都需要一个Ad ...

  3. Unity - Photon PUN 本地与网络同步的逻辑分离 (二)

    上篇实现了事件系统的设计,这篇就来结合发送RPC消息 并且不用标记 [PunRPC] 先来看下上编的代码 GameEnvent.cs private static Dictionary<Comm ...

  4. vb编程中的is是什么意思??

    在select case 语句中可以使用关系运算符大于>小于<等于=等关系运算符,需要用关键字IS和TO.用个例子来说明:Private Sub Command1_Click()Dim a ...

  5. 从零开始学习java(一)java基础语法

    从公司裸辞一个月,原本工作是做VB的,现在想从事java:在找工作的时候总是要什么项目经验,多少有些不爽,所有语言都有共 通性,我就不信java有这么难?给自己点时间来学习.坚持一个月自学,看看自己的 ...

  6. No rule to make target '/usr/lib/x86_64-linux-gnu/libproj.so ,needed by '../bin/generate_pointcloud解决方法

    这是/usr/lib/x86_64-linux-gnu/文件夹内没有这个libproj.so 库,先在该文件夹内搜索是否有同名不同版本的库,如果有 ,可以使用ln -s在该文件夹内部对存在的库链接到一 ...

  7. mybatis中怎样使用having?

    1.dao层代码 List<ErgTipSimpleBo> queryListMore(@Param("typeId") Integer typeId,@Param(& ...

  8. springmvc 简单使用

    一.配置(使用)流程 1.新建maven工程,在pom.xml中导入相关包,重要的是springmvc包,servlet包,jstl包 <dependencies>             ...

  9. linux sort排序命令的高级用法(按多个列值进行排列)

    http://www.jquerycn.cn/a_9076 在linux中,使用sort按行进行排序是很简单的.不过有时,生活总是爱抛给你一个一个的问题.如果使用sort按多个列值排列,同时使用tab ...

  10. FTP模式简式:PORT/PASV/EPRT/EPSV

    简介 常见FTP有两种模式:PORT(主动模式).PASV(被动模式). 而EPRT/EPSV模式出现的原因是FTP仅仅提供了建立在IPv4上进行数据通信的能力,它基于网络地址是32位这一假设.但是, ...