Android ANR产生的原理和如何避免】的更多相关文章

一.概述 ANR(Application Not responding),是指应用程序未响应,Android系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间能未能得到有效响应或者响应时间过长,都会造成ANR.一般地,这时往往会弹出一个提示框,告知用户当前xxx未响应,用户可选择继续等待或者Force Close. 那么哪些场景会造成ANR呢? Service Timeout:比如前台服务在20s内未执行完成: BroadcastQueue Timeout:比如前台广播在10s内未执行…
在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框.用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”. 所以一个流畅的合理的应用程序中不能出现anr,而让用户每次都要处理这个对话框.因此,在程序里对响应性能的设计很重要,这样系统不会显示ANR给用户.默认情况下,在android中Activity的最长执行时间是5秒,BroadcastReceiver…
站在巨人的肩膀上可以看的更远 做一个优秀的搬运工 Android 彻底理解安卓应用无响应机制 Android ANR日志分析全面解析 优秀的文章不可独享,要扩散,要做好笔记,哈 <沁园春长沙> 一九二五年 独立寒秋,湘江北去,橘子洲头. 看万山红遍,层林尽染; 漫江碧透,百舸争流. 鹰击长空,鱼翔浅底, 万类霜天竞自由. 怅寥廓, 问苍茫大地, 谁主沉浮? 携来百侣曾游,忆往昔峥嵘岁月稠. 恰同学少年,风华正茂; 书生意气,挥斥方遒. 指点江山,激扬文字, 粪土当年万户侯. 曾记否, 到中流击…
在实际情况中,当Android项目的用户量特别大时候,一些细小的问题也会被放大,ANR问题就是一个典型的例子. 一些ANR问题只会发生在用户实际使用的情景,当系统资源比较紧张等一些特殊情况下才会遇到,而这些ANR问题有很大一部分是因为我们的代码不合理导致,这就需要我们定位问题,修复问题,并且在以后的代码设计中尽量避免这些不合理. 最近工作中集中分析了项目的大量的用户自动上报的ANR问题日志,虽然网上ANR相关的文章已经很多了,在这里还是做一个总结. 提纲 一. 什么情况下会出现ANR 二. AN…
ANR介绍 ANR 的全称是 Application No Responding,即应用程序无响应,具体是一些特定的 Message (Key Dispatch.Broadcast.Service) 在应用的UI线程(主线程)没有在规定的时间内处理完,进而触发 ANR 异常. ANR 由消息处理机制保证,Android 在系统层实现了一套精密的机制来发现 ANR,核心原理是消息调度和超时处理.ANR 机制主体实现在系统层,所有与 ANR 相关的消息,都会经过系统进程 system_server …
现在Android系统的root破解基本上成为大家的必备技能!网上也有很多中一键破解的软件,使root破解越来越容易.但是你思考过root破解的 原理吗?root破解的本质是什么呢?难道是利用了Linux kernal的漏洞吗?本文将简单对root的破解原理进行分析. 网上有一篇文章已经对root破解的基本原理进行了简单介绍,大家可以先参考一下<android root权限破解分析>,本文只能说对root原理进行了方向性的描述,但是在一些具体的方面没有描述清楚.本文将会对其进行一些必要的扩展和…
下面有两篇关于Android ANR的文章,感觉不错,分享一下! [Android实例] [Sundy系列]网上绝无仅有的Log分析教程及例子!android ANRhttp://blog.csdn.net/muojie/article/details/6138688…
Android系统Recovery工作原理之使用update.zip升级过程分析(一)---update.zip包的制作 http://blog.csdn.net/mu0206mu/article/details/7399822 Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决http://blog.csdn.net/mu0206mu/article/details/7464551 Android系统Recovery…
ANRs (“Application Not Responding”),意思是”应用没有响应“. 在如下情况下,Android会报出ANR错误: – 主线程 (“事件处理线程” / “UI线程”) 在5秒内没有响应输入事件 – BroadcastReceiver 没有在10秒内完成返回 通常情况下,下面这些做法会导致ANR 1.在主线程内进行网络操作 2.在主线程内进行一些缓慢的磁盘操作(例如执行没有优化过的SQL查询) 应用应该在5秒或者10秒内响应,否则用户会觉得“这个应用很垃圾”“烂”“慢…
========================================================          ======================================================== =              [原创文章]:参考部分博客内容,学习之余进行了大量的筛减细化分析                        =          =                          [特殊申明]:避讳抄袭侵权之嫌疑,特…
========================================================          ======================================================== =              [原创文章]:参考部分博客内容,学习之余进行了大量的筛减细化分析                        =          =                          [特殊申明]:避讳抄袭侵权之嫌疑,特…
本文框架 什么是热修复? 热修复框架分类 技术原理及特点 Tinker框架解析 各框架对比图 总结   通过阅读本文,你会对热修复技术有更深的认知,本文会列出各类框架的优缺点以及技术原理,文章末尾简单描述一下Tinker的框架结构. 一.什么是热修复? 正常开发流程 热修复开发流程 热修复优势 修复什么? 二.热修复框架分类 现状:百花齐放百家争鸣 简单分类 更合理的分类 三.技术原理及特点 3.1 阿里Dexposed -- native解决方案 原理: 直接在native层进行方法的结构体信…
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/44283093,本文出自:[张鸿洋的博客] 1.概述 在上一篇Android FoldingLayout 折叠布局 原理及实现(一)我们实现了下面的1,2,3. 1.Matrix的setPolyToPoly使用 2.在图片上使用渐变和阴影 3.初步的FoldingLayout的实现,完成图片的折叠显示(可控制折叠次数.包含阴影的绘制) 4.引入手势,手指可以可以FoldingLa…
  ANR即Application Not Responding应用无响应,一般在ANR的时候会弹出一个应用无响应对话框.也许有些开发者在使用某些手机开发中不在弹出应用无响应弹出框,特别是国产手机Android4.0以上的系统中,即使在开发者选项中设置了“显示所有应用无响应-为后台应用显示无响应ANR对话框”,主要是因为在某些国产手机系统中就将该选项屏蔽了,应用超过了一定时间无响应也不会弹出ANR对话框了. 一般情况下应用无响应的时候回产生一个日志文件,位于/data/anr/文件夹下面,tra…
https://android-notes.github.io/2016/12/03/android%E9%95%BF%E6%88%AA%E5%B1%8F%E5%8E%9F%E7%90%86/   android长截屏原理 小米系统自带的长截屏应该很多人都用过,效果不错.当长截屏时listview就会自动滚动,当按下停止截屏时,就会得到一张完整的截屏. 该篇就介绍一下长截屏的原理 上篇中介绍了android屏幕共享实现方式,该篇的原理和上一篇基本一致. 获取view影像 当我们想得到一个view…
上文<Android系统root破解原理分析>介绍了Android系统root破解之后,应用程序获得root权限的原理.有一些网友提出对于root破解过程比较感兴趣,也提出了疑问.本文将会对这个root破解过程进行分析,来解答这个问题. 通过上文<Android系统root破解原理分析> 的介绍大家应该明白了root破解过程的终极目标是替换掉系统中的su程序.但是要想替换掉系统中su程序本身就是需要root权限的,怎样在root破 解过程中获得root权限,成为我们研究的重点了.下…
 Android自复制传播APP原理学习(翻译) 1 背景介绍 论文链接:http://arxiv.org/abs/1511.00444 项目地址:https://github.com/Tribler/self-compile-Android 吃完晚饭偶然看到这篇论文,当时就被吸引了,马上翻译总结了一下.如有错误欢迎斧正. 该论文的研究出发点比较高大上这里我们就不多说了,简而言之就是想通过移动设备来实现一个自组网,在发生灾难的时候,手机之间能够自动传输关键数据,减少损失.整个目标通过设计一个能够…
本文转载自:http://blog.csdn.net/mu0206mu/article/details/7465603       Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程     目前update-script脚本格式是edify,其与amend有何区别,暂不讨论,我们只分析其中主要的语法,以及脚本的流程控制. 一.update-script脚本语法简介: 我们顺着所生成的脚本来看其中主要涉…
本文转载自:http://blog.csdn.net/mu0206mu/article/details/7465551  Android系统Recovery工作原理之使用update.zip升级过程分析(八)---升级程序update_binary的执行过程   一.update_binary的执行过程分析 上一篇幅中的子进程所执行的程序binary实际上就是update.zip包中的update-binary.我们在上文中也说过,Recovery服务在做这一部分工作的时候是先将包中update…
本文转载自:http://blog.csdn.net/mu0206mu/article/details/7465439  Android系统Recovery工作原理之使用update.zip升级过程分析(六)---Recovery服务流程细节            Recovery服务毫无疑问是Recovery启动模式中最核心的部分.它完成Recovery模式所有的工作.Recovery程序对应的源码文件位于:/gingerbread0919/bootable/recovery/recovery…
<Android插件化技术——原理篇>     转载:https://mp.weixin.qq.com/s/Uwr6Rimc7Gpnq4wMFZSAag?utm_source=androidweekly&utm_medium=website | 导语 插件化技术最早从2012年诞生至今,已经走过了5个年头.从最初只支持Activity的动态加载发展到可以完全模拟app运行时的沙箱系统,各种开源项目层出不穷,在此挑选了几个代表性的框架,总结其中的技术原理.由于本人水平有限,插件化框架又相…
阿里Dexposed -- native解决方案 原理: 直接在native层进行方法的结构体信息对换,从而实现完美的方法新旧替换,从而实现热修复功能   他的思想完全来源于Xposed框架,完美诠释了AOP编程,这里用到最核心的知识点就是在native层获取到指定方法的结构体,然后改变他的nativeFunc字段值,而这个值就是可以指定这个方法对应的native函数指针,所以先从Java层跳到native层,改变指定方法的nativeFunc值,然后在改变之后的函数中调用Java层的回调即可.…
导读 高德地图开放平台产品不断迭代,代码逻辑越来越复杂,现有的测试流程不能保证完全覆盖所有业务代码,测试不到的代码及分支,会存在一定的风险.为了保证测试全面覆盖,需要引入代码覆盖率做为测试指标,需要对SDK代码进行染色,测试结束后可生成代码覆盖率报告,作为发版前的一项重要卡点指标.本文小结了Android端代码染色原理及技术实践.   JaCoCo工具 JaCoCo有以下优点: 支持Ant和Gradle打包方式,可以自由切换. 支持离线模式,更贴合SDK的使用场景. JaCoCo文档比较全面,还…
1.1 什么是热修复 对于广大的移动开发者而言,发版更新是最为寻常不过的事了.然而,如果你 发现刚发出去的包有紧急的BUG需要修复,那你就必须需要经过下面这样的流程: 这就是传统的更新流程,步骤十分繁琐.总的来说,传统流程存在这几大弊端: 重新发布版本代价太大 用户下载安装成本太高 BUG 修复不及时,用户体验太差 相应的,许多开发者找到了比较合适的解决办法. Hybrid 方案.也就是把需要经常变更的业务逻辑以 H5 的方式独立出来.而这种方案, 需要传统的 java 开发者学习前端语言,不仅…
在前一篇文章 深入探索Android热修复技术原理读书笔记 -- 热修复技术介绍中,对热修复技术进行了介绍,下面将详细介绍其中的代码修复技术. 1 底层热替换原理 在各种 Android 热修复方案中,Andfix 的即时生效令人印象深刻,它稍显另类, 并不需要重新启动,而是在加载补丁后直接对方法进行替换就可以完成修复,然而它的使用限制也遭遇到更多的质疑. 1.1 Andfix 回顾 我们先来看一下,为何唯独 Andfix 能够做到即时生效呢? 原因是这样的,在 app 运行到一半的时候,所有需…
该系列文章: 深入探索Android热修复技术原理读书笔记 -- 热修复技术介绍 深入探索Android热修复技术原理读书笔记 -- 代码热修复技术 1 普遍的实现方式 Android资源的热修复,就是在app不重新安装的情况下,利用下发的补丁包 直接更新本app中的资源. 目前市面上的很多资源热修复方案基本上都是参考了 Instant Run的实现. 简要说来,Instant Run中的资源热修复分为两步: 构造一个新的 AssetManager,并通过反射调用 addAssetPath,把这…
热修复系列文章: 深入探索Android热修复技术原理读书笔记 -- 热修复技术介绍 深入探索Android热修复技术原理读书笔记 -- 代码热修复技术 深入探索Android热修复技术原理读书笔记 -- 资源热修复技术 1. SO库加载原理 Java Api 提供以下两个接口加载一个 so 库 System. loadLibrary (String libName):传进去的参数:so 库名称, 表示的 so 库文件,位于apk压缩文件中的 libs 目录,最后复制到 apk 安装目录下. S…
一.概述 ANR(Application Not responding),是指应用程序未响应,Android系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间能未能得到有效响应或者响应时间过长,都会造成ANR.一般地,这时往往会弹出一个提示框,告知用户当前xxx未响应,用户可选择继续等待或者Force Close. 那么哪些场景会造成ANR呢? Service Timeout:服务在20s内未执行完成: BroadcastQueue Timeout:比如前台广播在10s内执行完成 Co…
一.概述 作为 Android 开发者,相信大家都遇到过 ANR.那么为什么会出现 ANR 呢,ANR 之后系统都做了啥.文章将对这个问题详细解说. ANR(Application Not responding),是指应用程序未响应,Android系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间能未能得到有效响应或者响应时间过长,都会造成ANR.一般地,这时往往会弹出一个提示框,告知用户当前xxx未响应,用户可选择继续等待或者Force Close. 那么哪些场景会造成ANR呢? S…