Android vitals 简介

  • 谷歌推荐使用Android vitals来帮助开发者提高App的稳定性和性能表现。
  • 作为这个方案的一部分, Play Console提供了Android Vitals dashboard的早期测试版本。当被选中的用户运行App时,设备会记录大量的测试指标数据,包括app稳定性、渲染时间和电池使用数据。
  • Play Console统计这些数据并在dashboard中显示。
  • 这个dashboard将帮助开发者了解app的性能,而且当app的性能表现不好时,会发出相应的警告。

Android vitals 指标

  • ANR rates
  • Crash rates
  • Slow rendering
  • Frozen frames
  • Stuck partial wake locks
  • Excessive wakeups
  • Excessive background Wi-Fi scans
  • Excessive background network usage
ANRs
  1. 描述:UI线程如果被阻塞太长的时间, “Application Not Responding” (ANR) 就被触发。

    • 如果被阻塞的app处于前台,系统会显示一个ANR对话框。
  2. 触发:以下两个条件,任意各一个都会导致ANR

    • 当app处于前台时,在5s内无法相应用户输入或广播。
    • 当app没有activity处于前台时,广播接收器正在进行长时间的任务,且无法结束。
  3. 常见情况:长耗时计算、IO操作、锁竞争、死锁、慢广播处理。
Crashes

未经处理的异常或signal将会导致Crash。
- Java代码crash主要是Throwable类抛出的未处理异常
- Nativie代码crash主要是由未经处理的signal导致,比如SIGSEGV

Slow rendering
  • 为了保证UI交互的流畅,必须保证每帧的渲染时间不超过16毫秒,保证60的FPS。
  • 一旦界面有较慢的渲染,系统将强制跳帧,用户就会感觉到卡顿。
  • We call this jank. 我们把这种现象称为jank。
Frozen frames
  • 超过700毫秒渲染时间的帧,是slow rendering的极端情况。
  • 你的app将会在冻帧处卡顿,并且几乎整整一秒都无法响应UI。
  • 由于用户操作(比如滑动屏幕),app需要启动或切换场景,并布局和渲染所有屏幕中的view,使得渲染时间可能超过16ms。
  • 但无论如何,冻帧都不应当出现。系统会自动监控冻帧,并在 Android Vitals dashboard显示冻帧数据。
Stuck partial wake locks
  • 局部唤醒锁是PowerManager在屏幕关闭之后,保持cpu继续运行的机制。不管屏幕关闭是系统超时,还是用户按下了电源键。
  • app通过acquire()及Flag参数PARTIAL_WAKE_LOCK来请求局部环形锁。
  • 当app获得了局部唤醒锁,并长时间运行在后台(对于用户不可见),这个局部环形锁就会处于卡住(stuck)状态。
  • 如果局部唤醒锁长期处于卡住状态,将会加快耗尽电池,因为它会阻止系统进入低功耗模式。
  • 规范使用:当app需求时才获取局部唤醒锁,并在任务完成后尽快释放掉。
Excessive wakeups
  • 唤醒机制,是AlarmManager API 为了定时唤醒设备而设置闹铃的机制。
  • app通过AlarmManagerset()方法来设置闹铃,同时还需要选择RTC_WAKEUPELAPSED_REALTIME_WAKEUP作为FLAG。
  • 当闹铃触发时,设备从低功耗模式唤醒,而且当onReceive()onAlarm()运行时,将自动获取一个局部唤醒锁。
  • 过多地唤醒,将加快电量的损耗。
Excessive Wi-Fi Scanning in the Background
  • 每当后台执行WIFI扫描,将会唤醒CPU,导致电量损耗。
  • 如果多次执行WIFI扫描,电池寿命将会显著地降低。
Excessive background network usage
  • 当每app在后台连接移动网络,将会唤醒CPU并打开无线设备。
  • 频繁地连接移动网络,将会加快电量损耗。

---------------------

本文来自 崩豆 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/cangely/article/details/80504292?utm_source=copy

Android Vitals各性能指标介绍的更多相关文章

  1. Android四大基本组件介绍与生命周期

    Android四大基本组件介绍与生命周期 Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器 ...

  2. Android Testing学习01 介绍 测试测什么 测试的类型

    Android Testing学习01 介绍 测试测什么 测试的类型 Android 测试 测什么 1.Activity的生命周期事件 应该测试Activity的生命周期事件处理. 如果你的Activ ...

  3. Xamarin Android教程Android基本知识版本介绍与系统介绍

    Xamarin Android教程Android基本知识版本介绍与系统介绍 Xamarin Android教程Android基本知识版本介绍与系统介绍,开发Andriod有时候不像iOS一样轻松,因为 ...

  4. Android系统架构说明介绍

    Android系统架构说明介绍 Android系统架构和一些普遍的操作系统差不多,都是采用了分层的架构,从他们之间的架构图看,Android系统架构分为四个层,从高层到低层分别是应用程序层.应用程序框 ...

  5. Android SQLite 数据库详细介绍

    Android SQLite 数据库详细介绍 我们在编写数据库应用软件时,需要考虑这样的问题:因为我们开发的软件可能会安装在很多用户的手机上,如果应用使用到了SQLite数据库,我们必须在用户初次使用 ...

  6. 【转】Android 4.2蓝牙介绍

    原文网址:http://blog.csdn.net/innost/article/details/9187199 Tieto公司某蓝牙大牛写得<程序员>投稿文章 Android 4.2蓝牙 ...

  7. Android MVP模式 简单易懂的介绍方式

    主要学习这位大神的博客:简而易懂 Android MVP模式 简单易懂的介绍方式 https://segmentfault.com/a/1190000003927200

  8. Android HttpClient HttpURLConnection相关介绍

    Android HttpClient HttpURLConnection相关介绍 遇到一个问题 在android studio上用HttpClient编写网络访问代码的时候,发现该类无法导入并使用.. ...

  9. Visual Studio跨平台开发实战(4) - Xamarin Android基本控制项介绍

    原文 Visual Studio跨平台开发实战(4) - Xamarin Android基本控制项介绍 前言 不同于iOS,Xamarin 在Visual Studio中针对Android,可以直接设 ...

随机推荐

  1. upload上传通关游戏

    第一关:后缀名限制,抓包改一下后缀. 前端脚本检测文件扩展名.当客户端选择文件点击上传的时候,客户端还没有向服务器发送任何消 息,前端的 js 脚本就对文件的扩展名进行检测来判断是否是可以上传的类型 ...

  2. HIVE外部表 分区表

    HIVE外部表 分区表    外部表        创建hive表,经过检查发现TBLS表中,hive表的类型为MANAGED_TABLE. 在真实开发中,很可能在hdfs中已经有了数据,希望通过hi ...

  3. Java模版引擎之Freemarker

    Java模版引擎之Freemarker freemarker是一款模版引擎,是一种基于模版生成静态文件的通用工具,它是为Java程序员提供的一个类库,它不是面向最终用户的,而是为程序员提供了一款可以嵌 ...

  4. idea启动tomcat时报错:Error during artifact deployment. See server log for details.

    Error during artifact deployment. See server log for details. 这个很多人都找不出来,原因无非2个: 一.jar 包有有些没能识别,tomc ...

  5. C++目录

    C++ lambda表达式 C++中如何设计一个类只能在堆或者栈上创建对象,面试题 C++之STL总结精华笔记 指针强制类型转换的理解 关于指针类型和指针类型转换的理解 C++继承种类 C++ 单例模 ...

  6. linux命令自动补全

    在linux中命令较长时,不易记忆,使用命令行自动补全,使用方便,配置方法记录如下 需要安装bash-completion 重启后生效 命令:yum install bash-completion,安 ...

  7. Asp.net core 学习笔记 Node Service

    我们知道 npm 是很大的库,很多轮子可以用 所以 .net core 替我们封装了一个调用 nodejs 的 service 就叫 node service 我们只要在 server 安装 node ...

  8. spring-boot-plus集成Shiro+JWT权限管理

    SpringBoot+Shiro+JWT权限管理 Shiro Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理. 使用Shiro的易于理解的API,您可以 ...

  9. hdu 3364 高斯入门。。

    扣了一个高斯的介绍 比较全面(来自http://blog.csdn.net/duanxian0621/article/details/7408887) 高斯消元法,是线性代数中的一个算法,可用来求解线 ...

  10. python 识别图像主题并切割

    两种办法,一种是用百度的API,效果还可以,不过好像每天有50次的调用的限制 from aip import AipImageClassify import cv2 """ ...