Android检测应用卡顿

当应用发生卡顿时,我们如何得知是什么原因导致的呢?是机器性能差,还是代码问题,抑或是其他应用抢占CPU资源问题呢?特别是概率比较低,难以复现的卡顿问题。使用BlockCanary库可以帮助你记录应用发生卡顿时的堆栈信息和CPU信息。

BlockCanary

用法

dependencies {compile 'com.github.markzhai:blockcanary-android:1.5.0'// 仅在debug包启用BlockCanary进行卡顿监控和提示的话,可以这么用debugCompile 'com.github.markzhai:blockcanary-android:1.5.0'releaseCompile 'com.github.markzhai:blockcanary-no-op:1.5.0'
}

在Application中

public class DemoApplication extends Application {@Overridepublic void onCreate() {// 在主进程初始化调用BlockCanary.install(this, new AppBlockCanaryContext()).start();}
}

详情参考《Android Performance Monitor》

原理

BlockCanary是如何做到监测到应用卡顿,并及时dump出堆栈信息的呢?

  1. 一个Android应用进程通过zygote进程fork出来的,进程创建完成后,DVM就会执行ActivtyThread中的main()方法,而在main()方法中主要是为主线程创建Looper循环器,并开始循环,从下面的代码可以看出。
    ActivityThread.main()
  2. 自此,主线程的Looper循环器进入无限循环,不断从消息队列中取出消息,一条条地进行处理。通过查看Looper.loop()方法的代码可以看出,在调用dispatchMessage()方法处理消息前后,都会调用logging.println()方法,而这个logging对象可以通过Looper类的setMessageLogging()进行设置。因此,我们只需要自定义实现Printer接口的类(对应BlockCanary库中的LooperMonitor类),然后创建该类的实例,并通过setMessageLogging()方法设置到主线程的Looper循环器中。 Looper.loop()

BlockCanary扩展库——BlockCanaryEx

BlockCanaryEx主要是在BlockCanary的基础上,提供了更加详细的dump信息。

具体用法参考BlockCanaryEx

参考资料

  1. Android Performance Monitor
  2. BlockCanaryEx)
  3. BlockCanary — 轻松找出Android App界面卡顿元凶 | markzhai’s home

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/34317.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android进阶之用起来很卡,解决方法

最近开始安装使用android studio,痛苦的发现安装或者后期升级后as运行时非常的卡。于是,深入的研究解决方法并不断的尝试,最后总结出如下的两点。 一、工具软件配置 1、解决网络连接问题 (1)问题描述 检查你的 Andr…

Android开发——监控造成UI卡顿的原因

0. 前言 Android只有主线程才能更新UI。如果界面1秒钟刷新少于60次,即FPS小于60,用户就会产生卡顿感觉。 Android使用消息机制进行UI更新的,如果在主线程handler的dispatchMessage方法进行了耗时操作,就会发生UI卡顿。 本文原创…

Android app优化之导致app 卡顿慢的直接原因

大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能。从设计师的角度,他们希望App能够有更多的动画,图片等时尚元素来实现流畅的用户体验。但是Android系统很有可能无法及时完成那些复杂的界面渲染操作。Android系统每隔16ms发出VSYNC信号&a…

android页面卡顿定位,Android界面卡顿分析步骤详解

1、打开ddms工具,位于Sdk\tools\monitor.bat,双击 2、连上手机,选着进程,点击上面的start Method Profiling按钮 image.png 3、点击之后会弹出一个对话框,点击ok即可,然后操作你认为卡顿的界面。再点击一次刚刚的按钮。…

如何监测Android应用卡顿?这篇就够了

本文首发于微信公众号「Android开发之旅」,欢迎关注 Jetpack版Wan-Android项目地址:Android Jetpack架构开发组件化应用实战 欢迎star Flutter版Wan-Android项目地址:Flutter版Wan-Android 欢迎star 卡顿介绍 用户在使用我们应用的时候&am…

Android卡顿优化

一. Android渲染知识 1.1 绘制原理 Android系统要求每一帧都要在 16ms 内绘制完成,平滑的完成一帧意味着任何特殊的帧需要执行所有的渲染代码(包括 framework 发送给 GPU 和 CPU 绘制到缓冲区的命令)都要在 16ms 内完成,保持流畅…

解决安卓手机卡顿的七个技巧

转载自:http://www.7to.cn/news/detail/3446.html 导读:最近,有用户吐槽自己的手机越来越卡,其实这不是手机的问题,而安卓运行机制的缺陷。虽然安卓系统512MB也能流畅运行,但这仅仅是系统流畅,现在手机APP都…

全网最新:面向Android开发中的“卡顿问题及解决方法”

前言 Android开发中卡顿问题一直是个比较棘手又重要的问题,严重影响用户体验;卡顿是人的一种视觉感受,比如我们滑动界面时,如果滑动不流畅我们就会有卡顿的感觉,这种感觉我们需要有一个量化指标,在编程时如…

Android 卡顿调研

/ 今日科技快讯 / 近日,新华社发文评价盲盒经济称,盲盒不仅成为一个经济现象,也反映了当下中国年轻人,特别是“95后”一代的心理和生活状态。惊喜和期待的背后,“盲盒热”所带来的上瘾和赌博心理也在滋生畸形消费&…

安卓-页面卡顿-分析方法

界面卡顿影响的页面 : ListViewScrollView有动画的页面 分析步骤 打开调试开发者选项,GPU呈现模式分析如果蓝色部分比较高,说明是UI线程性能问题红色部分比较高,应该是DrawList比较复杂,这部分可能跟蓝色部分相关。目…

Android手机为何不再卡顿?性能优化才是安卓起飞关键

现在谈到挂载 Android系统的 手机,大部分人的印象早已不像前几年,几年前的安卓机那是用了一段时间就变得有点卡顿,用1年就卡的动弹不得,不得不每年都更换新机。 为什么以前会出现这种情况呢?其实主要是有些程序在运行…

Android App 反应卡顿解决方案

Android App 反应卡顿,从技术上将就是UI 渲染慢。 UI渲染是从您的应用程序生成一个框架并将其显示在屏幕上的行为。 为了确保用户与您的应用程序的交互顺利,您的应用程序应该在16ms内渲染帧数达到每秒60帧(为什么60fps?&#xff…

中文大模型评估基准:C-EVAL: A Multi-Level Multi-Discipline Chinese Evaluation Suite for Foundation Models

论文:https://arxiv.org/abs/2305.08322 网站:C-Eval: A Multi-Level Multi-Discipline Chinese Evaluation Suite for Foundation Models 一、导言 随着大语言模型的迅速发展,如何评估一个大模型的能力也成为了一个重要的话题&#xff0c…

「国际科技信息中心SCITIC论坛」从细胞、基因和人工智能,探讨智慧医疗的机遇和挑战...

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 2023年3月22日,由国际科技信息中心主办,AI TIME承办的SCITIC论坛“细胞,基因和人工智能:探索医学研究的未来”完美收官。SCITIC论坛由国际科技信息中心倾力打造&a…

C-Eval:构造中文大模型的知识评估基准

作者:符尧,何俊贤 排版:宋梓瑜 来源:海外独角兽 本项目立项于 2023 年 2 月 28 日,由上海交通大学、清华大学和爱丁堡大学共同完成,发布于 2023 年 5 月 22 日,原文链接:https://yao…

GPT(Chat)原理及其应用

摘要 遥想以往,人类沟通的方式只有口头或书面文字,但现在随着科技的发展,人类的沟通方式又得到了革命性的变化,即通过聊天机器人实现人机沟通。而GPT(Chat)中文聊天机器人又是其中的一种,它可以通过技术手段来自然地与…

AI:什么是智能?

本篇文章是博主在人工智能等领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅解。文章分类在学习摘录和笔记专…

ChatGPT推荐的开源项目,到底靠不靠谱?

今天我们让ChatGPT推荐一些开源项目,看看这些项目到底靠不靠谱? 首先,我们需要明确一个概念,那就是什么是开源项目。开源项目是指代码开放、可自由使用、修改和分发的软件项目。开源项目的优点显而易见,它们免费、透明…

餐饮行业最新的经营模式——私域运营案例

疫情让许多企业发展面临巨大压力,而私域流量在这个时刻成为很多餐饮企业爱如珍宝的“救命稻草”。甚至有人预言,今年将可能是餐饮私域流量醒觉得第一年。目睹着越来越多的餐饮企业其中甚至还有餐饮大牌企业都加入私域流量中来。但好多餐饮人都不太了解私…

基于PHP的餐饮行业管理系统

第一章 绪论 1.1 系统开发背景 近年来,基于用户对网络信息传递的实时性以及高效性等方面的需求,使得信息化技术手段以及相关的产业结构得到的飞速的发展,其中最为出众的当属电商化的运营管理模式,其一经推广便受到了广泛的关注。…