android之app流畅度分析

大多数人感觉卡顿等性能问题的最主要根源都是因为渲染性能。从设计师的角度,他们希望App能够有更多的动画,图片等时尚元素来实现流畅的用户体验。但是Android系统很有可能无法及时完成那些复杂的界面渲染操作。Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染,如果每次渲染都成功,这样就能够达到流畅的画面所需要的60fps,为了能够实现60fps,这意味着程序的大多数操作都必须在16ms内完成、时间超出16ms越多,丢的帧就越多(可以大概估计5秒没响应抛出anr异常期间丢了多少帧,5000/16=312帧)

1流畅度相关概念了解

刷新率vs帧率

刷新率:每秒屏幕刷新次数,手机屏幕的刷新率是60HZ
帧率:GPU在一秒内绘制的帧数(1000ms/帧=帧率)

丢帧

Android系统每隔16ms发出VSYNC信号,触发GPU对UI进行渲染,如果你的某个操作花费时间是24ms,系统在得到VSYNC信号的时候由于还没有准备好,就无法进行更新任何内容,那么用户在32ms内看到的会是同一帧画面(卡顿现象),即丢帧现象。

1. 高动画流畅性需求页面

  • 首先开启自带的GPU图形呈现器(每帧是否超过16ms。即是否达到60帧,低于30帧需要提交报告)
  • Android studio monitor 查看各项指标(备选)
  • adb shell dumpsys gfxinfo PackageName(导出最近120帧的各线程的gpu渲染信息)
  • Trepn Profiler 查看各项指标(查看最近所有的信息,最全,并导出excel)

2. 普通动画

  • 开启自带的GPU图形呈现器(每帧是否超过16ms的线。即是否达到60帧,低于15帧需要提交报告

现在的App每秒中最多能绘制60帧,1000ms/60帧=16.67ms/帧,也就是说对图像绘制的要求是平均每帧的绘制时间为16.67ms,超过了这个时间就可能造成不流畅的现象。

原文地址:https://www.cnblogs.com/chen-xia/p/11230921.html

时间: 2024-10-03 02:47:14

android之app流畅度分析的相关文章

【MIG专项测试组】如何准确评测Android应用的流畅度?

转自 腾讯Bugly 叶方正,2008年加入腾讯,就职于无线研发部[专项测试组].曾经负责多个产品的性能优化工作,积累大量的移动终端平台优化以及评测经验. 怎样获取SM值? 前文我们分析了通过测量应用的帧率FPS并不能准确评价App的流畅度(如何量化Android应用的“卡”?流畅度原理&定义篇),FPS较低并不能代表当前App在UI上界面不流畅,而1s内VSync这个Loop运行了多少次更加能说明当前App的流畅程度. 那么我们可以直接在App代码中通过Choreographer的回调Fram

app流畅度测试--使用SM

通过测量应用的帧率FPS并不能准确评价App的流畅度,FPS较低并不能代表当前App在UI上界面不流畅,而1s内VSync这个Loop运行了多少次更加能说明当前App的流畅程度. 那么我们可以直接在App代码中通过Choreographer的回调FrameCallback来计算Loop被运行了几次,从而知道应用的流畅度.但在实际情况下我们不一定能修改代码(实际发布的版本不允许加入测试代码)或者根本拿不到代码(譬如和竞品进行对比). 介绍一种更简单直观测量Android应用流畅度的方法,就是通过开

app流畅度测试--使用FPS Meter

1.FFPS Meter是一款非常实用的小软件,能够用数字实时显示安卓界面的每秒帧数,非常直观.此外,FPS Meter还可以显示最大帧数.最小帧数以及平均帧数,用来评价安卓流畅度极具价值.由于涉及到了系统功能,所以FPS Meter需要root.如果你打算尝试,请先root机后再使用. 2.FPS Meter的使用很简单,开启App后启动服务即可.在App内,你可以选择帧数显示的位置,以及是否开启平均帧数.最低/最高帧数显示.开启服务后,即可看到有帧数显示于界面上.          注意:使

Android之App应用启动分析与优化

前言: 昨晚新版本终于发布了,但是还是记得有测试反馈app启动好长时间也没进入app主页,所以今天准备加个班总结一下App启动那些事! app的启动方式: 1.)冷启动      当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动.冷启动因为系统会重新创建一个新的进程分配给它,所以会先创建和初始化Application类,再创建和初始化MainActivity类(包括一系列的测量.布局.绘制),最后显示在界面上. 2.)热启动      当启动

app流畅度测试--使用手机自带功能

1.进入开发者选项,在"监控"选项卡找到"GPU呈现模式分析"的选项 2.开启后,即可以条形图和线形图的方式显示系统的界面相应速度 3.那么要如何根据曲线判断系统是否流畅呢?实际上这个曲线表达的是GPU绘制每一帧界面的时间,只要不超过顶部绿线,都可以视为足够流畅 好处: 数据准确 不占资源,对流畅度测试的影响比较小 缺点: 当系统停顿了一下,例如微博加载图片时,响应速度会大幅增加,曲线瞬间突破绿线--这情况不能说不流畅,因为这属于内容和界面先后响应的机制,如果光凭曲

<转>Android App性能评测分析-流畅度篇

1.前言 在手机App竞争越来越激烈的今天,Android App的各项性能特别是流畅度不如IOS,安卓基于java虚拟机运行,触控响应的延迟和卡顿比IOS系统严重得多.一些下拉上滑.双指缩放快速打字等操作,安卓的流畅度都表现比较糟糕,但是,对于App使用过程是否流畅,一直没有一个可靠的指标将用户的客观感受和数据一一对应.虽然之前有FPS(每秒帧数)作为游戏或视频类App的性能指标,但对于那些界面更新不多的App来说,仍不是一个合适的衡量数据.以下会根据实际app性能测试案例,展开进行app性能

Android流畅度测试

Android流畅度测试 测试方法一:系统自带-开发者模式 测试方法二:FPS Meter测试安卓帧数 H5页面加载速度:window.performance.timing 测试方法一:系统自带-开发者模式 实际上,为了方便开发者测试,安卓本身就内置了流畅度检测的功能.不过,这需要我们开启隐藏的开发者选项.如果你在用原生系统,那么开启开发者选项的方法很简单,进入到设置菜单“关于手机”页面,点击数次“版本号”,即可开启开发者选项.如果用的是其他ROM,方法也许有所不同,比如说魅族的Flyme开启开

Android流畅度之帧率

背景:app改版,人为感受卡顿,需要客观数据支撑观点.故,搜索各种性能指标,并理解之.(这是一篇摘要文......) 首先,明确人为感受的性能不好属于下面哪种: 1. 响应时间,界面跳转后响应时间: 2. 流畅度,界面操作时或动画展示的效果: 而流畅度的衡量指标又有几种: 1. 帧率fps(Frames Per Second,每秒钟填充图像的帧率) 2. 丢帧SF(Skipped frame) 3. 流畅度SM(SMoothness)(腾讯分享) 其中得到最广泛使用的还是帧率.以下详细说明之 回

提高Android应用手写流畅度(基础篇)

在使用android类的手写应用时,整体上都有这样一个印象:android的手写不流畅.不自然,和苹果应用比起来相差太远.本文结合作者亲身经历,介绍一下有效提高手写流畅度的几种方法: 1.未做任何处理的手写效果: 这是一个自定义的view,通过在onTouchEvent时间中捕获系统回调的触摸点信息,然后再onDraw方法里面刷新,可以明显地感觉到线条很生硬,并且在手写的过程中跟随感很差,反应迟钝,具体代码如下: package com.mingy.paint.view; import andr