我是靠谱客的博主 魁梧大叔,最近开发中收集的这篇文章主要介绍ANR产生的原因及其定位分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

ANR是Android 中独有的概念,全称Application No Responding 如何定位和和避免出现这个问题是Android程序员的必备修养

一 、ANR产生的原因

1.1 ANR 产生的原因

只有当应用程序的UI线程响应超时才会引起ANR 超时产生的原因有两种,1 当前事件没有机会处理,例如UI线程正在响应另外的事件,当前事件被某个事件给阻塞掉了 2 当前事件正在处理 但是由于耗时太长没有能及时的完成

1.1.2产生原因分类

根据产生原因不同超时时间也不尽相同 可以分为 Activity类(5秒)广播接收者类(10秒) 服务类(20秒)

二 典型的ANR问题场景

1.应用程序UI线程存在耗时操作,例如在UI线程中进行网络请求,数据库操作或者文件操作等,可能会导致UI线程无法及时处理用户输入等,。

2.应用程序UI线程等待子线程释放某个锁,从而无法处理用户的请求的输入

3.耗时操作的动画需要大量的计算工作,可能导致CPU负载过重

三、ANR的定位和分析

 当发生ANR时候开发者可以结合logcat日志和生成的定位于手机内部的/data/anr/traces.txt文件进行分析和定位

最后

以上就是魁梧大叔为你收集整理的ANR产生的原因及其定位分析的全部内容,希望文章能够帮你解决ANR产生的原因及其定位分析所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部