`

Android ANR介绍与避免

阅读更多
很多初入Android开发的网友可能发现ANR的字样,到底Android ANR是什么呢? 其实ANR就是Application Not Responding的全称,当某个应用处于长期假死状态时Android系统会弹出一个窗口上面写道,XXX is not responding给出两个按钮一个为force close一个为wait。
   可能触发ANR的情况
  1. 长时间的I/O处理,比如读写大文件,网络访问时造成的阻塞。
  2. 执行耗时的运算,Android默认为超过5000ms即5秒开始弹出ANR窗口,某些应用可能首次执行时没有缓存十分耗时,可以通过Splash播放闪屏Logo等方式来延缓加载
  3. Service和appWidget中也要注意多线程的使用,除非它和Activity工作在不同的进程。
  避免ANR的方法
1. 单独开工作者线程,通过独立的Thread或使用类似AsyncTask的方式来处理耗时的内容。
2. 耗时的操作尽量分段处理,使用类似状态机的方法,类似Symbian的活动对象将一个复杂的事情,分段执行。
3. UI线程中不要处理过多的内容,比如将一个5MB的文本,让TextView去setText,要知道这种UI操作,没有什么好方法去解决的,所以Android123提示,遇到UI中需要执行复杂的操作,可以参考上面2提到的分段处理方式。

http://www.cnblogs.com/xirihanlin/archive/2010/01/07/1641621.html
分享到:
评论

相关推荐

    如何分析及避免Android ANR问题.pdf

    本文对Android中常发生的ANR现象的成因原理及主要发生场景进行了简要介绍,举例了几种典型的ANR场景实例。总结提供了优化改善的若干解决思路。 值得Android开发人员收藏!

    android ANR

    该文档主要介绍什么是anr, anr的三种类型,三种类型的具体分析,如何避免anr等等。。

    Android ANR(Application Not Responding)的分析

    主要介绍了Android ANR(Application Not Responding)的分析的相关资料,这里说明什么原因出现应用程序的强制关闭,并说明该如何避免,需要的朋友可以参考下

    Android开发中避免应用无响应的方法(Application Not Responding、ANR)

    本课讲的是如何保持应用响应,避免ANR。 什么触发ANR 通常,系统会在应用无法对用户输入响应时显示ANR。比如,如果一个应用在I/O操作上阻塞了(频繁请求网络)UI线程,系统无法处理用户输入事件。或者,在UI线程中,...

    android 面试2

    避免ANR:Android应用程序通常运行在一个单独的线程里面,称谓主线程,所以在主线程里面少做一些耗时长的程序,而是利用子线程来操作一些繁琐的事情,用Handler来把子线程处理的消息返回给主线程 22、简要解释一下...

    Android代码-ArgusAPM

    ArgusAPM是360移动端产品使用的可视化性能监控平台,为移动端APP提供性能监控与管理,可以迅速发现和定位各类APP性能和使用问题,帮助APP不断的提升用户体验。 产品价值 实时掌控应用性能 降低性能定位成本 有效...

    Android开发性能优化总结

    一. 加载 预加载:1....1. 避免在UI线程做太多耗时操作,IntentReceiver > 10s Anr 2. 并发操作多用读写锁,少用synchronized,Android虚拟机Art直到Android6.0为止尚未对synchronized做CAS优化,而sy

    andriod精华学习教程

    如何最佳构建应用程序来避免ANR。 Android应用程序通常是运行在一个单独的线程(例如,main)里。这意味着你 的应用程序所做的事情如果在主线程里占用了太长的时间的话,就会引发ANR对 话框,因为你的应用程序并没有...

    测试管家:可靠的Android测试,为您服务

    禁用崩溃和ANR对话框,因此系统应用程序行为异常不会触发导致UI测试失败的弹出窗口。 锁定键盘锁,WiFi无线电和CPU,以确保它们在测试运行时不会意外进入睡眠状态。 禁用系统拼写检查器以避免红线突出显示和文本...

    为了面试收集的一些java和安卓的知识点

    android为每个app设置了一个内存上限。 减少内存对象的占用,内存对象的重复利用 ANR 也就是在规定的时间内,没有响应。处理:避免在UI线程,BroadcastReceiver 还有service主线程中,处理复杂的逻辑和计算 layout_...

    Kotlin-Firebase-Group-Chat:使用在Kotlin中构建的firebase(类似于whatsapp)进行群组和OneonOne聊天

    Kotlin-Firebase-Group-Chat 使用Kotlin内置的Firebase进行群聊。产品特点- 群聊一对一聊天Google登录建立群组删除讯息使用“回收者”视图对聊天消息进行反向分页。... (避免使用ANR) Bug修复屏幕截图

Global site tag (gtag.js) - Google Analytics