广告
返回顶部
首页 > 资讯 > 精选 >Android中ANR的示例分析
  • 190
分享到

Android中ANR的示例分析

androidanr 2023-05-30 20:05:45 190人浏览 独家记忆
摘要

这篇文章将为大家详细讲解有关Android中ANR的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Android ANR(Application Not Responding)的分析ANR (Ap

这篇文章将为大家详细讲解有关Android中ANR的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Android ANR(Application Not Responding)的分析

ANR (Application Not Responding)  

    ANR定义:在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现anr,而让用户每次都要处理这个对话框。因此,在程序里对响应性能的设计很重要,这样系统不会显示ANR给用户。

    默认情况下,在android中Activity的最长执行时间是5秒,BroadcastReceiver的最长执行时间则是10秒

第一:什么会引发ANR? 

   在Android里,应用程序的响应性是由Activity Manager和WindowManager系统服务监视的 。当它监测到以下情况中的一个时,Android就会针对特定的应用程序显示ANR:

在5秒内没有响应输入的事件(例如,按键按下,屏幕触摸)

BroadcastReceiver在10秒内没有执行完毕

造成以上两点的原因有很多,比如在主线程中做了非常耗时的操作,比如说是下载,io异常等。    

   潜在的耗时操作,例如网络数据库操作,或者高耗时的计算如改变位图尺寸,应该在子线程里(或者以数据库操作为例,通过异步请求的方式)来完成。然而,不是说你的主线程阻塞在那里等待子线程的完成——也不是调用 Thread.wait()或是Thread.sleep()。替代的方法是,主线程应该为子线程提供一个Handler,以便完成时能够提交给主线程。以这种方式设计你的应用程序,将能保证你的主线程保持对输入的响应性并能避免由于5秒输入事件的超时引发的ANR对话框。 

第二:如何避免ANR? 

运行在主线程里的任何方法都尽可能少做事情。特别是,Activity应该在它的关键生命周期方法(如onCreate()和onResume())里尽可能少的去做创建操作。(可以采用重新开启子线程的方式,然后使用Handler+Message的方式做一些操作,比如更新主线程中的ui等) 

应用程序应该避免在BroadcastReceiver里做耗时的操作或计算。但不再是在子线程里做这些任务(因为 BroadcastReceiver的生命周期短),替代的是,如果响应Intent广播需要执行一个耗时的动作的话,应用程序应该启动一个 Service。(此处需要注意的是可以在广播接受者中启动Service,但是却不可以在Service中启动broadcasereciver,关于原因后续会有介绍,此处不是本文重点) 

避免在Intent Receiver里启动一个Activity,因为它会创建一个新的画面,并从当前用户正在运行的程序上抢夺焦点。如果你的应用程序在响应Intent广 播时需要向用户展示什么,你应该使用Notification Manager来实现。 

关于“Android中ANR的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: Android中ANR的示例分析

本文链接: https://www.lsjlt.com/news/221367.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android中ANR的示例分析
    这篇文章将为大家详细讲解有关Android中ANR的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Android ANR(Application Not Responding)的分析ANR (Ap...
    99+
    2023-05-30
    android anr
  • Android之ANR分析
    目录 一、ANR是什么?二、ANR触发原因和场景ANR类型ANR原因ANR常见的场景 三、ANR触发时系统做了啥四、看源码小结ANR输出重要进程的traces信息,这些进程包含: 重...
    99+
    2023-10-23
    android java
  • Android anr问题分析
    前言 本文主要介绍anr问题一手分析、分类判断,归类后提case给平台处理。 不是针对应用开发的anr分析和优化处理。 anr问题分类 anr问题主要分为 1、input 无焦点anr Reason:...
    99+
    2023-09-01
    android
  • Android ANR原理分析
    目录卡顿原理 卡顿监控 ANR原理 卡顿原理 主线程有耗时操作会导致卡顿,卡顿超过阀值,触发ANR。 应用进程启动时候,Zygote会反射调用ActivityThread的main...
    99+
    2022-11-12
  • Android中ANR的分析和解决
    一、认识ANR ANR的定义 ANR,是“Application Not Responding”的缩写,即“应用程序无响应”。如果你应用程序在UI线程被阻塞太长时间,就会出现ANR,通常出现ANR,...
    99+
    2023-09-26
    Framework Android
  • Android中EventBus的示例分析
    这篇文章将为大家详细讲解有关Android中EventBus的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。展示效果 添加EventBus导入依赖compile 'org.gre...
    99+
    2023-05-30
    android eventbus
  • Android中FrameLayout的示例分析
    这篇文章将为大家详细讲解有关Android中FrameLayout的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概述       FrameLayout以...
    99+
    2023-06-29
  • 通过Android trace文件分析死锁ANR实例过程
    对于从事Android开发的人来说,遇到ANR(Application Not Responding)是比较常见的问题。一般情况下,如果有ANR发生,系统都会在/data/an...
    99+
    2022-06-06
    anr Android
  • android中AsyncTask类的示例分析
    这篇文章将为大家详细讲解有关android中AsyncTask类的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。AsyncTask也叫做“异步任务”,是一个抽象类   Asyn...
    99+
    2023-05-30
    android
  • Android中OOM与Leakcanary的示例分析
    这篇文章主要介绍Android中OOM与Leakcanary的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Android内存泄漏常见场景以及解决方案资源性对象未关闭对于资源性对象不再使用时,应该立即调用它的...
    99+
    2023-06-25
  • Android中Notification.Builder通知的示例分析
    这篇文章将为大家详细讲解有关Android中Notification.Builder通知的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Android Notification.Builder通知...
    99+
    2023-05-30
    android
  • Android ANR分析trace文件的产生流程详情
    目录前言接着分析最后一步向收集到的进程发送信号前言 首先收集需要dump trace的进程并给对应进程发送dump trace的信号 1.当一些带有超时机制的系统消息(如:Servi...
    99+
    2022-11-13
  • Android Animation之TranslateAnimation的示例分析
    这篇文章主要为大家展示了“Android Animation之TranslateAnimation的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android Animation之Tr...
    99+
    2023-05-30
    android animation translateanimation
  • Android中的ANR简述
    ANR是Application Not responding,指应用程序未响应,Android系统如果超过预定时间未能得到有效响应或者响应时间过长,都会造成ANR,因为Android系统对于一些事件需要在一定的时间范围内...
    99+
    2023-06-04
  • Android性能优化之ANR问题定位分析
    目录前言1 ANR原因总结1.1 KeyDispatchTimeout1.2 BroadCastTimeout1.3 ServiceTimeout1.4 ContentProvide...
    99+
    2022-11-13
  • Android中RecyclerView复用错乱的示例分析
    这篇文章给大家分享的是有关Android中RecyclerView复用错乱的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。复用错乱的解决办法本文的前半部分很简单的,以为关于复用错乱,RecyclerVie...
    99+
    2023-05-30
    android recyclerview
  • Android中IntentFilter匹配规则的示例分析
    这篇文章将为大家详细讲解有关Android中IntentFilter匹配规则的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。IntentFilter的匹配规则IntentFilter的使用假如我们...
    99+
    2023-05-30
    android
  • Android中ContentProvider基础应用的示例分析
    小编给大家分享一下Android中ContentProvider基础应用的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、适用场景ContentProv...
    99+
    2023-06-22
  • Android Gradle插件3.0的示例分析
    这篇文章主要为大家展示了“Android Gradle插件3.0的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android Gradle插件3.0的示例分析”这篇文章吧。为了提升编译...
    99+
    2023-05-30
    android gradle
  • Android对话框AlertDialog的示例分析
    这篇文章将为大家详细讲解有关Android对话框AlertDialog的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。AlertDialog可以在当前的界面上显示一个对话框,这个对话框是置顶于所有...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作