我是靠谱客的博主 追寻悟空,最近开发中收集的这篇文章主要介绍什么是ANR,如何避免它,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.在安卓上,如果你的APP有一段时间响应不够灵敏,系统就会向用户显示一个对话框,这个对话框称之为应用程序无响应(ANR)对话框。

如果开发手机上出现这种问题,可以通过查看/data/anr/traces.txt来获取导致ANR的信息,最开始部分为最新信息。

一般导致ANR的原因有:

1.主线程被IO操作阻塞;

2.主线程存在耗时计算;

3.主线程中错误的操作,比如Thread.wait或者Thread.sleep等安卓系统会监视应用程序的响应情况,一旦出现下面两种情况,就会弹出ANR对话框。

4.应用程序5秒内没有响应用户的输入事件;

5.BroadcastReceiver未在10秒内完成相关处理;

6.Service无法在20秒内完成处理。

解决办法:

1.使用AsyncTask处理耗时IO操作;

2.设置主线程和子线程的优先级,因为默认子线程和主线程优先级相同。

3.使用Handler处理子线程结果,而不是使用Thread.wait()和Thread.sleep()来阻塞主线程。

4.Activity的onCreate()和onResume()回调尽量避免耗时的代码, BroadcastReceiver中onReceive代码也要尽量减少耗时,建议使用IntentService处理。

总之,所以耗时操作都要在子线程里面完成,在通过Handler,AsyncTask等方式更新UI。无论如何都要保证用户界面的流畅度。

2.Activity和Fragment的生命周期

 

参考文章:https://juejin.im/post/5e5c5e306fb9a07cbe346d71

最后

以上就是追寻悟空为你收集整理的什么是ANR,如何避免它的全部内容,希望文章能够帮你解决什么是ANR,如何避免它所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部