原文地址:http://blog.csdn.net/goodlixueyong/article/details/50935977

开发者选项是Android为开发者提供的一个APP验证、调试、优化等各种功能的入口,它可以帮助我们提高调试效率,协助发现一些bug。这个功能的入口在每个Rom上的位置不尽相同,我的小米手机显示位置是在“其他高级设置”里。有的Rom对开发者模式进行了隐藏,通常的开启方法是进入到设置里的“关于手机”,然后快速连续点击版本号多次,就会显示出来。

今天来总结一下开发者模式中常用的功能有哪些,这些功能可以给我们提供什么帮助,以及如何来使用它。由于工作内容原因,有些功能用的比较少,这里只对本人常用的熟悉的功能进行讲解。

USB调试

这应该使用的最频繁的功能,简单讲就是需要打开它你才能通过电脑连接上手机,如果发现调试的时候手机连接不上,关注一下是不是没有打开这个选项吧。

不锁定屏幕

由于通常我们都会进行锁屏设置,所以开发的时候一段时间不用手机就会黑屏,这个选项开启之后,连接手机将不会锁屏。

显示布局边界

进行UI设计中时常会用到,开启之后会显示页面布局的边界和框架,通过这个显示结果我们可以看到没有达到预期效果的布局的问题在哪里,开启之后的效果如下。在一个论坛中偶然看到有人说,可以通过“显示布局边界”来判断这个界面或者某个部位是不是html5实现,我只想说,好机智。

窗口动画(过渡动画、动画程序时长)缩放

实现动画效果时,可以直接设置调整动画的时长来看动画效果。当然如果你不嫌麻烦的话,可以在代码里反复调整,每次都去重新编译运行。

强制进行GPU渲染

这个选项的意思就是强制开启硬件加速。对于用户来讲,开启之后应用会变得流畅,但是由于有些Canvas方法不支持硬件加速,开启之后可能会引起应用crash。

显示GPU视图更新

开启之后可以看到页面会不停闪烁,尤其是滑动页面的时候闪烁更频繁,这就表示闪烁的页面或者View等开启了硬件加速。如果发现某个页面一点闪烁都没有,那就说明这个页面关闭了硬件加速功能。

调试GPU过度绘制

下图是开启这个选项后的效果:

该功能会用几种不同的颜色绘制屏幕,来标识overdraw发生的位置以及程度如何,各种颜色的意义如下:
没有颜色: 意味着没有overdraw。像素只画了一次。
蓝色: 意味着overdraw 1倍。像素绘制了两次。大片的蓝色还是可以接受的(若整个窗口是蓝色的,可以摆脱一层)。
绿色: 意味着overdraw 2倍。像素绘制了三次。中等大小的绿色区域是可以接受的但你应该尝试优化、减少它们。
浅红: 意味着overdraw 3倍。像素绘制了四次,小范围可以接受。
暗红: 意味着overdraw 4倍。像素绘制了五次或者更多。这是错误的,要修复它们。

GPU呈现模式分析

可以选择使用条形图还是线型图显示,选择哪种显示方式显示结果都是类似的。下图是选择条形图后的显示情况:

每列数据显示了渲染每一帧需要的时间,每一条线意味着一帧被绘制出来,而每条线中的不同颜色又代表着在绘制过程中的不同阶段:
       Draw (蓝色) 代表着View.onDraw()方法。在这个环节会创建/刷新DisplayList中的对象,这些对象在后面会被转换成GPU可以明白的OpenGL命令。而这个值比较高可能是因为view比较复杂,需要更多的时间去创建他们的display list,或者是因为有太多的view在很短的时间内被创建。
       Process (红色) – 执行Display list中的内容并创建OpenGL命令。如果有过多或者过于复杂的display list需要执行的话,那么这阶段会消耗较长的时间,因为这样的话会有很多的view被重绘。而重绘往往发生在界面的刷新或是被移动出了被覆盖的区域。
       Execute (黄色) – 发送OpenGL命令到GPU。这个阶段是一个阻塞调用,因为CPU在这里只会发送一个含有一些OpenGL命令的缓冲区给GPU,并且等待GPU返回空的缓冲区以便再次传递下一帧的OpenGL命令。而这些缓冲区的总量是一定的,如果GPU太过于繁忙,那么CPU则会去等待下一个空缓冲区。所以,如果我们看到这一阶段耗时比较长,那可能是因为GPU过于繁忙的绘制UI,而造成这个的原因则可能是在短时间内绘制了过于复杂的view。

绿色的横线表示每一帧渲染时间的阈值,值为16ms,这是因为Android流畅运行的帧率为60fps,如果每一帧的渲染时间超过16ms,帧率就降低到小于60fps,会出现丢帧的情况,直观的感受就是页面出现卡顿。如果发现条形图基本上低于绿色的线,说明页面的绘图效率良好,但当条形线频繁的超过绿色的线,应用的布局应该是有问题的,通常都是由于布局不合理或者是太过复杂。通过不同颜色的线所占的比重,可以确定卡顿是由哪个阶段引起的。

不保留活动

开启这个选项表示页面切到后台以后将会被系统销毁,一般用来模拟设备内存不足时后台Activity被销毁的场景。我们可以用它来测试页面重建的稳定性。如果你的应用在开启它时功能基本正常,说明代码设计得比较合理,代码写的足够健壮。这个具体怎么理解呢?

我们知道Activity有一个回调方法onSavedInstanceState()会在页面被切到后台时调用来保存页面的状态,如果页面重新切回前台而且已经被系统销毁的情况下,系统会帮我们重建页面,这个状态通常是很难模拟的。开启这个功能,就可以模拟这个情况,然后进行页面状态恢复的调试。也就是说,如果两个Activity A启动B,B启动后系统销毁了页面A,从B页面再切回来时将会白屏(或者黑屏)一下,这就是系统在重建我们的A页面。如果我们对页面恢复的处理不当,就有可能导致页面的重建出现异常,因为毕竟系统没有智能到帮我们保存所有必要的数据,有些还是需要我们自己手动来保存的。我们在测试中发现,如果将B页面的属性设置为透明,也就是设置主题为android:theme="@android:style/Theme.Translucent",这时候系统并不会销毁A页面,那是因为A页面并没有执行onStop()回调方法。

这个功能只是作为调试辅助开启比较合适,普通用户开启后将严重影响用户体验。

Android调试系列之开发者选项常用功能相关推荐

  1. Android调试系列之dumpsys命令

    Android调试系列之dumpsys命令 版权声明:本文为[viclee]原创,如需转载请注明出处~ https://blog.csdn.net/goodlixueyong/article/deta ...

  2. Android 11 默认打开开发者选项

    Android 11 默认打开开发者选项 修改部分 packages/apps/Settings/src/com/android/settings/SettingActivity.java 在 doU ...

  3. n6pro android,360 N6Pro开启开发者选项功能的图文教程,方法步骤:  1、我

    360 N6Pro开启开发者选项功能的图文教程,方法步骤: 1.我 现在很多手机上都是具备有开发者选项功能的,而只有我们需要对手机进行高级的特殊权限设置时,才会需要去把它打开:有不少的360 N6Pr ...

  4. 手机拿来开发android,安卓手机的“开发者选项”,可以用来干什么?

    安卓手机都有"开发者选项"功能,连续点击五次系统版本号可以打开.但是,开发者选项里面的具体功能,相信很多人不知道.下面以MIUI为例来讲解一下. 过渡动画调节 这个功能比较使用,可 ...

  5. Android系统默认打开开发者选项中的TP触摸开关

    在定制系统开发中,有时会遇到客户为了方便生产测试硬件主板,客户会提出生产测试软件需要默认打开开发者选项中的TP触摸开关,也就是show_touches和pointer_location 具体实现方法如 ...

  6. 常用 Android 开发者选项与卡顿原因

    应用UI卡顿 常见原因主要在以下几个方面: 1.人为在UI线程中做轻微耗时操作,导致UI线程卡顿: 2.布局Layout过于复杂,无法在16ms内完成渲染: 3.同一时间动画执行的次数过多,导致CPU ...

  7. Android开发者选项中,这29个功能你忽略了吗?

    前言 1.Android的开发者选项对于每个开发人员来说,肯定再熟悉不过了. 一个设备,如果你不打开开发者选项中的USB调试,那么连接到电脑上是不显示该设备的,也无法直接把程序运行到设备上,没法调试, ...

  8. Android系统移植与调试之如何修改Android系统默认显示【开发者选项】并默认打开【USB调试】和【未知来源】开关

    转自:[http://blog.csdn.net/ouyang_peng] http://blog.csdn.net/qq446282412/article/details/49815865 今天有个 ...

  9. 苹果usb设置在哪里_努比亚红魔3红魔3S打开开发者选项和USB调试功能

    经常使用电脑下载软件或者备份的小伙伴们,肯定用到最多的是开发者选项里的USB调试 功能,但努比亚的手机一直没找到入口,相对于苹果来说,安卓手机还需要简单设置一下 的,下面就跟着ROM乐园一起来学习怎么 ...

最新文章

  1. matlab title多个标题_Matlab画图,只需要这几步
  2. Ubuntu .deb包安装方法
  3. 2021年12届蓝桥杯C++B组省赛
  4. 源码网站都有哪些_一个网站都包括哪些费用?
  5. Linux链接文件包括,Linux操作系统——系统各目录有什么作用、以及文件链接过程...
  6. Django REST框架 -1
  7. python判断手机号码是否正确_Python实现随机生成手机号及正则验证手机号的方法...
  8. 什么是SQL Server中的数据库规范化?
  9. CentOS7安装Zabbix3.0
  10. 美服fgo显示服务器异常,FGO日服美服错误代码合集_FGO日服美服错误代码汇总_牛游戏网...
  11. 流量红利不再,餐企做私域流量要趁早
  12. 知识图谱(Knowledge Graph)
  13. 华为设备默认console密码
  14. c语言中calloc函数,C 库函数 – calloc()
  15. matlab 两个视频同时播放视频,视频画面合并教程:两个或多个视频合并在同一屏幕上同时播放...
  16. TCP与 UDP的区别
  17. estore网上书城项目分享
  18. Swan Song Gamma阶段博客目录
  19. python技术手册第二版_Python技术手册(第2版) 中文PDF
  20. 树洞外链更新至2.2-支持本地/远程储存,新增用户系统

热门文章

  1. 少儿编程 中国电子学会scratch等级考试一级历年真题解析【已更新至2023年3月 持续更新】
  2. Appium自动化测试(五)——PO模式(一):短信案例
  3. android-17手机,安卓手机好评排行:魅族17第四,小米10至尊第六,第一名意料之中...
  4. 【论文阅读】2021年牛津大学的 Survey:Recent Advances in Reinforcement Learning in Finance
  5. PS新手教程!手把手教你临摹一枚经典的SIRI拟物图标
  6. matlab矩阵左右翻转例子
  7. 2020.04.10 【ABAP随笔】- ABAP面试分享
  8. 网页能够兼容所有手机浏览器—杂记(2)
  9. 安装一个新的int 9中断例程【在DOS下,按Tab建后改变当前屏幕的显示颜色,其它键照常处理】...
  10. criterial查询(2014-05-29 03:51)续-----Example