草庐IT

Android性能优化之游戏引擎初始化ANR

近期,着手对bugly上的anr处理,记录下优化的方向。借用网上的一张图:这里的anr问题是属于主线程的call耗时操作。需要使用trace来获取发生anr前一些列的耗时方法调用时间,再次梳理业务,才可能解决。问题1java调用栈:从调用栈中发现onActivityResult()执行对游戏侧的初始化会造成anr。因靠打印是不准确,存在多线程抢占cpu的缘故,因此考虑通过获取trace来记录方法的真正执行时间。记录oppo渠道包的冷启动到登录页面的sampletrace文件,总览trace中存在的耗时点:这里查看主线程中执行方法。淡绿色是app中的代码,长方形占用面积越大,越耗时。查看onAc

ANR系列(二)——ANR监听方案之WatchDog

前言ANR的监控在Android6.0之前可以通过监听文件data/anr/trace读取trace信息来分析,但从6.0之后就被禁止了。随着Android的发展,手机里的ANR越来越多,对ANR的监控方案也就五花八门。WatchDog方案WatchDog是个开源的框架,是一个短小精悍的UI卡顿监测框架,只有2个源文件,ANRWatchDog和ANRError。1、WatchDog核心原理启动一个异步线程,在while循环中,使用主线程的Handler发送一个消息,线程休眠指定的时间5s,当线程唤醒之后,如果发送的消息还没被主线程执行,即认为主线程发生了卡顿。成员变量_anrListener:

安卓ANR问题排查手册

前言目前,我们大多数的应用都是没有专门接入ANR监控框架的,所以,本文的讲解主要是以借助log和trace的方式进行ANR问题的分析。一.ANR问题分类大分类小分类Reason/Subject超时时间原因输入无响应输入事件未响应Inputdispatchingtimedout(...)5S具体细分的话()中有6种不同的类型。主线程阻塞,输入的事件5S得不到响应。界面无焦点Inputdispatchingtimedout(Waitingbecausenowindowhasfocusbutthereisafocusedapplicationthatmayeventuallyaddawindowwh

Android anr问题分析

前言本文主要介绍anr问题一手分析、分类判断,归类后提case给平台处理。不是针对应用开发的anr分析和优化处理。anr问题分类anr问题主要分为1、input无焦点anrReason:Inputdispatchingtimedout(Applicationdoesnothaveafocusedwindow)2、input有焦点anrReason:Inputdispatchingtimedout(eadf99net.zedge.android/net.zedge.android.activity.MainActivity(server)isnotresponding.Waited13000ms

【Android】带你细看Android input系统中ANR的机制

“本文基于Android13源码,分析Input系统的Anr实现原理“在文章之前,先提几个问题:如果在activity任意周期(onCreate,onResume等),同步执行耗时超过5s(ANR时间)的任务,期间不进行点击,那会触发ANR吗?如果在button点击的时候,在onClick回调同步执行耗时超过5s的任务。点击一次会触发ANR吗?点击2次呢,3次呢?1、ANR分类首先看一下anr的分类:InputANR:按键或触摸事件在5s内没有相应,主要在activity、fragment中。Serviceanr:前台service响应时间是20s,后台service是200s。Broadca

【Android】带你细看Android input系统中ANR的机制

“本文基于Android13源码,分析Input系统的Anr实现原理“在文章之前,先提几个问题:如果在activity任意周期(onCreate,onResume等),同步执行耗时超过5s(ANR时间)的任务,期间不进行点击,那会触发ANR吗?如果在button点击的时候,在onClick回调同步执行耗时超过5s的任务。点击一次会触发ANR吗?点击2次呢,3次呢?1、ANR分类首先看一下anr的分类:InputANR:按键或触摸事件在5s内没有相应,主要在activity、fragment中。Serviceanr:前台service响应时间是20s,后台service是200s。Broadca

android - 当 Google Play 开发者控制台收到崩溃或 ANR 时,是否可以收到通知(例如电子邮件)?

我使用BugSnag(类似于BugSense,Bugify等)来跟踪和管理我的Android应用程序错误,但是,我遇到了应用程序在BugSnag可以初始化之前崩溃的情况,所以找到这个崩溃报告的唯一地方是在GooglePlayDeveloperConsole崩溃报告。这很好,但我不得不手动检查开发者控制台以发现BugSnag没有捕获到的错误(顺便说一下,它们并不明显)。有没有办法在发生错误时从GooglePlay开发者控制台设置电子邮件通知? 最佳答案 没有。GooglePlay只能为Alerts发送电子邮件,而不是崩溃或ANR。我已

android - 当 Google Play 开发者控制台收到崩溃或 ANR 时,是否可以收到通知(例如电子邮件)?

我使用BugSnag(类似于BugSense,Bugify等)来跟踪和管理我的Android应用程序错误,但是,我遇到了应用程序在BugSnag可以初始化之前崩溃的情况,所以找到这个崩溃报告的唯一地方是在GooglePlayDeveloperConsole崩溃报告。这很好,但我不得不手动检查开发者控制台以发现BugSnag没有捕获到的错误(顺便说一下,它们并不明显)。有没有办法在发生错误时从GooglePlay开发者控制台设置电子邮件通知? 最佳答案 没有。GooglePlay只能为Alerts发送电子邮件,而不是崩溃或ANR。我已

Android:如何从三星 Galaxy Tab 获取 data/anr/traces.txt?

在我的三星GalaxyTab上调试时,我的应用程序给出了anr。该设备可以在Eclipse的DDMS中查看,我可以使用DDMS文件资源管理器浏览sdcard。但是我无法浏览到数据目录(当我单击该目录旁边的下拉箭头时,该目录似乎已打开)。有什么技巧可以获取文件吗? 最佳答案 您可以使用以下命令获取文件:adbpull/data/anr/traces.txt希望这会有所帮助,弗朗西斯科。 关于Android:如何从三星GalaxyTab获取data/anr/traces.txt?,我们在St

Android:如何从三星 Galaxy Tab 获取 data/anr/traces.txt?

在我的三星GalaxyTab上调试时,我的应用程序给出了anr。该设备可以在Eclipse的DDMS中查看,我可以使用DDMS文件资源管理器浏览sdcard。但是我无法浏览到数据目录(当我单击该目录旁边的下拉箭头时,该目录似乎已打开)。有什么技巧可以获取文件吗? 最佳答案 您可以使用以下命令获取文件:adbpull/data/anr/traces.txt希望这会有所帮助,弗朗西斯科。 关于Android:如何从三星GalaxyTab获取data/anr/traces.txt?,我们在St