当前位置: 首页>资格认证/考试 > 专升本考试国开《Android智能手机编程》单元1形考任务1.docx

国开《Android智能手机编程》单元1形考任务1.docx

  • 卖家[上传人]:两***
  • 文档编号:68924
  • 上传时间:2021-12-25
  • 文档格式:DOCX
  • 页数:28
  • 文档大小:2.88MB
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、国开Android智能手机编程单元1形考任务12015年伊始,Google发布了关于Android性能优化典范的专题, 一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App。课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议。主要从三个 方面展开,Android的渲染机制,内存与GC,电量优化。下面是对这些问题和建议的总结梳理。0)Render Performance大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能。从设计师的角度,他们希望App能够有更多的动画,图片等时尚元素来实现流畅的用 户体验。但是Android系统很有可能无法及时完成那些复杂的界面渲染操作。Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染, 如果每次渲染都成功,这样就能够达到流畅的画面所需要的60fps,为了能够实现60fps,这意味着程序的大多数操作都必须在16ms内完成。如果你的某个操作花费时间是24ms,系统在得到VSYNC信号的时候就无法进行正常渲染,这样就发生了丢帧现

      2、象。那么用户在32ms内看到的会是同一帧画面。用户容易在UI执行动画或者滑动ListView的时候感知到卡顿不流畅,是因为这里的操作相对复杂,容易发生丢帧的现象,从而感觉卡顿。有很多原 因可以导致丢帧,也许是因为你的layout太过复杂,无法在16ms内完成渲染,有可能是因为你的UI上有层叠太多的绘制单元,还有可能是因为动画执行 的次数过多。这些都会导致CPU或者GPU负载过重。我们可以通过一些工具来定位问题,比如可以使用HierarchyViewer来查找Activity中的布局是否过于复杂,也可以使用手机设置里 面的开发者选项,打开Show GPU Overdraw等选项进行观察。你还可以使用TraceView来观察CPU的执行情况,更加快捷的找到性能瓶颈。1)Understanding OverdrawOverdraw(过度绘制)描述的是屏幕上的某个像素在同一帧的时间内被绘制了多次。在多层次的UI结构里面,如果不可见的UI也在做绘制的操作,这就会导致某些像素区域被绘制了多次。这就浪费大量的CPU以及GPU资源。当设计上追求更华丽的视觉效果的时候,我们就容易陷入采用越来越多的层叠组

      3、件来实现这种视觉效果的怪圈。这很容易导致大量的性能问题,为了获得最佳的性能,我们必须尽量减少Overdraw的情况发生。幸运的是,我们可以通过手机设置里面的开发者选项,打开Show GPU Overdraw的选项,可以观察UI上的Overdraw情况。蓝色,淡绿,淡红,深红代表了4种不同程度的Overdraw情况,我们的目标就是尽量减少红色Overdraw,看到更多的蓝色区域。Overdraw有时候是因为你的UI布局存在大量重叠的部分,还有的时候是因为非必须的重叠背景。例如某个Activity有一个背景,然后里面 的Layout又有自己的背景,同时子View又分别有自己的背景。仅仅是通过移除非必须的背景图片,这就能够减少大量的红色Overdraw区域,增加 蓝色区域的占比。这一措施能够显著提升程序性能。2)Understanding VSYNC为了理解App是如何进行渲染的,我们必须了解手机硬件是如何工作,那么就必须理解什么是VSYNC。在讲解VSYNC之前,我们需要了解两个相关的概念:· Refresh Rate:代表了屏幕在一秒内刷新屏幕的次数,这取决于硬件的固定参数,例

      4、如60Hz。· Frame Rate:代表了GPU在一秒内绘制操作的帧数,例如30fps,60fps。GPU会获取图形数据进行渲染,然后硬件负责把渲染后的内容呈现到屏幕上,他们两者不停的进行协作。不幸的是,刷新频率和帧率并不是总能够保持相同的节奏。如果发生帧率与刷新频率不一致的情况,就会容易出现Tearing的现象(画面上下两部分显示内容发生断裂,来自不同的两帧数据发生重叠)。理解图像渲染里面的双重与三重缓存机制,这个概念比较复杂,请移步查看这里:通常来说,帧率超过刷新频率只是一种理想的状况,在超过60fps的情况下,GPU所产生的帧数据会因为等待VSYNC的刷新信息而被Hold住,这样能够保持每次刷新都有实际的新的数据可以显示。但是我们遇到更多的情况是帧率小于刷新频率。在这种情况下,某些帧显示的画面内容就会与上一帧的画面相同。糟糕的事情是,帧率从超过60fps突然掉到60fps以下,这样就会发生LAG,JANK,HITCHING等卡顿掉帧的不顺滑的情况。这也是用户感受不好的原因所在。3)Tool:Profile GPU Rendering性能问题如此的麻烦,幸好我们可以有工

      5、具来进行调试。打开手机里面的开发者选项,选择Profile GPU Rendering,选中On screen as bars的选项。选择了这样以后,我们可以在手机画面上看到丰富的GPU绘制图形信息,分别关于StatusBar,NavBar,激活的程序Activity区域的GPU Rending信息。随着界面的刷新,界面上会滚动显示垂直的柱状图来表示每帧画面所需要渲染的时间,柱状图越高表示花费的渲染时间越长。中间有一根绿色的横线,代表16ms,我们需要确保每一帧花费的总时间都低于这条横线,这样才能够避免出现卡顿的问题。每一条柱状线都包含三部分,蓝色代表测量绘制Display List的时间,红色代表OpenGL渲染Display List所需要的时间,黄色代表CPU等待GPU处理的时间。4)Why 60fps?我们通常都会提到60fps与16ms,可是知道为何会是以程序是否达到60fps来作为App性能的衡量标准吗?这是因为人眼与大脑之间的协作无法感知超过60fps的画面更新。12fps大概类似手动快速翻动书籍的帧率,这明显是可以感知到不够顺滑的。24fps使得人眼感知的是连续线性的运

      6、动,这其实是归功于运动模糊的 效果。24fps是电影胶圈通常使用的帧率,因为这个帧率已经足够支撑大部分电影画面需要表达的内容,同时能够最大的减少费用支出。但是低于30fps是 无法顺畅表现绚丽的画面内容的,此时就需要用到60fps来达到想要的效果,当然超过60fps是没有必要的。开发app的性能目标就是保持60fps,这意味着每一帧你只有16ms=1000/60的时间来处理所有的任务。5)Android, UI and the GPU了解Android是如何利用GPU进行画面渲染有助于我们更好的理解性能问题。那么一个最实际的问题是:activity的画面是如何绘制到屏幕上的?那些复杂的XML布局文件又是如何能够被识别并绘制出来的?Resterization栅格化是绘制那些Button,Shape,Path,String,Bitmap等组件最基础的操作。它把那些组件拆分到不同的像素上进行显示。这是一个很费时的操作,GPU的引入就是为了加快栅格化的操作。CPU负责把UI组件计算成Polygons,Texture纹理,然后交给GPU进行栅格化渲染。然而每次从CPU转移到GPU是一件很麻烦的事

      7、情,所幸的是OpenGL ES可以把那些需要渲染的纹理Hold在GPU Memory里面,在下次需要渲染的时候直接进行操作。所以如果你更新了GPU所hold住的纹理内容,那么之前保存的状态就丢失了。在Android里面那些由主题所提供的资源,例如Bitmaps,Drawables都是一起打包到统一的Texture纹理当中,然后再传递到 GPU里面,这意味着每次你需要使用这些资源的时候,都是直接从纹理里面进行获取渲染的。当然随着UI组件的越来越丰富,有了更多演变的形态。例如显示图 片的时候,需要先经过CPU的计算加载到内存中,然后传递给GPU进行渲染。文字的显示更加复杂,需要先经过CPU换算成纹理,然后再交给GPU进行渲 染,回到CPU绘制单个字符的时候,再重新引用经过GPU渲染的内容。动画则是一个更加复杂的操作流程。为了能够使得App流畅,我们需要在每一帧16ms以内处理完所有的CPU与GPU计算,绘制,渲染等等操作。6)Invalidations, Layouts, and Performance顺滑精妙的动画是app设计里面最重要的元素之一,这些动画能够显著提升用户体验。下面会讲解

      8、Android系统是如何处理UI组件的更新操作的。通常来说,Android需要把XML布局文件转换成GPU能够识别并绘制的对象。这个操作是在DisplayList的帮助下完成的。DisplayList持有所有将要交给GPU绘制到屏幕上的数据信息。在某个View第一次需要被渲染时,DisplayList会因此而被创建,当这个View要显示到屏幕上时,我们会执行GPU的绘制指令来进行渲 染。如果你在后续有执行类似移动这个View的位置等操作而需要再次渲染这个View时,我们就仅仅需要额外操作一次渲染指令就够了。然而如果你修改了 View中的某些可见组件,那么之前的DisplayList就无法继续使用了,我们需要回头重新创建一个DisplayList并且重新执行渲染指令并 更新到屏幕上。需要注意的是:任何时候View中的绘制内容发生变化时,都会重新执行创建DisplayList,渲染DisplayList,更新到屏幕上等一 系列操作。这个流程的表现性能取决于你的View的复杂程度,View的状态变化以及渲染管道的执行性能。举个例子,假设某个Button的大小需要增大 到目前的两倍,在增大Bu

      9、tton大小之前,需要通过父View重新计算并摆放其他子View的位置。修改View的大小会触发整个 HierarcyView的重新计算大小的操作。如果是修改View的位置则会触发HierarchView重新计算其他View的位置。如果布局很复 杂,这就会很容易导致严重的性能问题。我们需要尽量减少Overdraw。我们可以通过前面介绍的Monitor GPU Rendering来查看渲染的表现性能如何,另外也可以通过开发者选项里面的Show GPU view updates来查看视图更新的操作,最后我们还可以通过HierarchyViewer这个工具来查看布局,使得布局尽量扁平化,移除非必需的UI组 件,这些操作能够减少Measure,Layout的计算时间。7)Overdraw, Cliprect, QuickReject引起性能问题的一个很重要的方面是因为过多复杂的绘制操作。我们可以通过工具来检测并修复标准UI组件的Overdraw问题,但是针对高度自定义的UI组件则显得有些力不从心。有一个窍门是我们可以通过执行几个APIs方法来显著提升绘制操作的性能。前面有提到过,非可见的UI组件进行绘制更新会导致Overdraw。例 如Nav Drawer从前置可见的Activity滑出之后,如果还继续绘制那些在Nav Drawer里面不可见的UI组件,这就导致了Overdraw。为了解决这个问题,Android系统会通过避免绘制那些完全不可见的组件来尽量减少 Overdraw。那些Nav Drawer里面不可见的View就不会被执行浪费资源。但是不幸的是,对于那些过于复杂的自定义的View(重写了onDraw方法),Android系统无法检测具体在onDraw里面会执行什么操作,系统无法监控并自动优化,也就无法避免Overdraw了

      《国开《Android智能手机编程》单元1形考任务1.docx》由会员两***分享,可在线阅读,更多相关《国开《Android智能手机编程》单元1形考任务1.docx》请在八斗文库上搜索。

      点击阅读更多内容
    TA的资源 更多>
  • 基于android的手机日程管理系统概要设计说明书.doc

    基于android的手机日程管理系统概要设计说明书.doc

  • 基于android的手机日程管理系统需求分析说明书.doc

    基于android的手机日程管理系统需求分析说明书.doc

  • 国开电大(湖南)《审计案例分析》形考任务1答案.docx

    国开电大(湖南)《审计案例分析》形考任务1答案.docx

  • 基于android的手机日程管理系统软件文档说明书.doc

    基于android的手机日程管理系统软件文档说明书.doc

  • 国开安徽《C语言程序设计》形考任务1.2及期末答案.docx

    国开安徽《C语言程序设计》形考任务1.2及期末答案.docx

  • 国开《Android智能手机编程》终结性考核答案.docx

    国开《Android智能手机编程》终结性考核答案.docx

  • 国开电大《经济法学》计分作业3答案.docx

    国开电大《经济法学》计分作业3答案.docx

  • 国开电大《建筑力学》形成考核册4答案.docx

    国开电大《建筑力学》形成考核册4答案.docx

  • 国开电大《经济法学》计分作业2答案.docx

    国开电大《经济法学》计分作业2答案.docx

  • 基于android的手机日程管理系统需求调研报告.doc

    基于android的手机日程管理系统需求调研报告.doc

  • 国开电大(湖南)《审计案例分析》形考任务2答案.docx

    国开电大(湖南)《审计案例分析》形考任务2答案.docx

  • 国开《Android智能手机编程》单元5形考任务1.docx

    国开《Android智能手机编程》单元5形考任务1.docx

  • 国开电大《纳税筹划》形考任务5答案.docx

    国开电大《纳税筹划》形考任务5答案.docx

  • 国开《Android智能手机编程》单元3形考任务1.docx

    国开《Android智能手机编程》单元3形考任务1.docx

  • 国开《公共危机管理(本)》形考任务1答案.docx

    国开《公共危机管理(本)》形考任务1答案.docx

  • 国开电大《纳税筹划》自测1-8章答案.docx

    国开电大《纳税筹划》自测1-8章答案.docx

  • 国开《办公信息处理》版本2实训4答案数字信息存储的方法正确使用信息存储载体.docx

    国开《办公信息处理》版本2实训4答案数字信息存储的方法正确使用信息存储载体.docx

  • 国开电大《建筑力学》形成考核册3答案.docx

    国开电大《建筑力学》形成考核册3答案.docx

  • 国开《办公信息处理》版本2实训七答案.docx

    国开《办公信息处理》版本2实训七答案.docx

  • 国开电大(湖南)《审计案例分析》形考任务3答案.docx

    国开电大(湖南)《审计案例分析》形考任务3答案.docx

  • 国开电大《财务管理》格力电器应收账款管理.docx

    国开电大《财务管理》格力电器应收账款管理.docx

  • 国开《Android智能手机编程》单元4形考任务1.docx

    国开《Android智能手机编程》单元4形考任务1.docx

  • 国开电大《经济法学》计分作业1答案.docx

    国开电大《经济法学》计分作业1答案.docx

  • 国开电大(湖南)《审计案例分析》终结性考试答案.docx

    国开电大(湖南)《审计案例分析》终结性考试答案.docx

  • 国开电大《财务管理#》形成考核1答案.docx

    国开电大《财务管理#》形成考核1答案.docx

  • 国开《办公信息处理》版本2实训二答案.doc

    国开《办公信息处理》版本2实训二答案.doc

  • 国开电大《建筑力学》形成考核册2答案.docx

    国开电大《建筑力学》形成考核册2答案.docx

  • 国开电大《财务管理》腾讯公司融资案例分析.docx

    国开电大《财务管理》腾讯公司融资案例分析.docx

  • 国开《办公信息处理》版本2形考任务5答案.docx

    国开《办公信息处理》版本2形考任务5答案.docx

  • 国开电大《经济法学》 第一次作业课堂讨论(案例分析)答案.docx

    国开电大《经济法学》 第一次作业课堂讨论(案例分析)答案.docx

  • 国开《公共危机管理(本)》形考任务3答案.docx

    国开《公共危机管理(本)》形考任务3答案.docx

  • 点击查看更多
    猜你喜欢
  • 竞争性谈判邀请函_7.docx

    竞争性谈判邀请函_7.docx

  • 教师个人教育教学工作总结.docx

    教师个人教育教学工作总结.docx

  • 建设工程安全C证职业资格考试试题(含答案)第1套.docx

    建设工程安全C证职业资格考试试题(含答案)第1套.docx

  • 农村土地经营权流转合同河北省文本).docx

    农村土地经营权流转合同河北省文本).docx

  • 企业各部门的职责权限概述(DOC 108页).docx

    企业各部门的职责权限概述(DOC 108页).docx

  • 建筑工程施工项目经理岗位职责.docx

    建筑工程施工项目经理岗位职责.docx

  • 六年级班主任工作总结_6.docx

    六年级班主任工作总结_6.docx

  • 建设工程施工企业安全员上岗资格考试(含答案)第10套.docx

    建设工程施工企业安全员上岗资格考试(含答案)第10套.docx

  • 联众四国军棋布阵大全.docx

    联众四国军棋布阵大全.docx

  • 行政人事部薪酬福利制度.docx

    行政人事部薪酬福利制度.docx

  • 公司车辆加油制度.docx

    公司车辆加油制度.docx

  • 规章制度汇编结构格式标准_1.docx

    规章制度汇编结构格式标准_1.docx

  • 客户服务中心组织架构及客服部门岗位职责.docx

    客户服务中心组织架构及客服部门岗位职责.docx

  • 建设工程安全C证职业资格考试试题(含答案)第12套.docx

    建设工程安全C证职业资格考试试题(含答案)第12套.docx

  • 家长会上班主任的讲话稿.docx

    家长会上班主任的讲话稿.docx

  • 教职工趣味运动会的活动方案.docx

    教职工趣味运动会的活动方案.docx

  • 绩效考核的十种应用(一).docx

    绩效考核的十种应用(一).docx

  • 教研组常规管理制度.docx

    教研组常规管理制度.docx

  • 供给商满意度调查表._1.docx

    供给商满意度调查表._1.docx

  • “领导干部作风建设年”主题教育活动总结材料.docx

    “领导干部作风建设年”主题教育活动总结材料.docx

  • 某村某年新农村建设工作总结.docx

    某村某年新农村建设工作总结.docx

  • 庐山的导游词四年级3篇.docx

    庐山的导游词四年级3篇.docx

  • 江苏水利工程精细化管理评价办法.docx

    江苏水利工程精细化管理评价办法.docx

  • 企业资金拆借协议范本.docx

    企业资金拆借协议范本.docx

  • 建设工程安全B证复审职业资格考试试题(含答案)第7套.docx

    建设工程安全B证复审职业资格考试试题(含答案)第7套.docx

  • 咖啡厅承包经营协议书_1.docx

    咖啡厅承包经营协议书_1.docx

  • 建设工程施工企业安全员上岗资格考试(含答案)第12套.docx

    建设工程施工企业安全员上岗资格考试(含答案)第12套.docx

  • 六年级上英语听力材料和答案.docx

    六年级上英语听力材料和答案.docx

  • 合并财务报表案例分析_8.docx

    合并财务报表案例分析_8.docx

  • 公司农户保价肉鸡养殖合同.docx

    公司农户保价肉鸡养殖合同.docx

  • 国内主题酒店发展探究.docx

    国内主题酒店发展探究.docx

  • 广州经济运行情况分析.docx

    广州经济运行情况分析.docx

  • 建设工程安全C证职业资格考试试题(含答案)第7套.docx

    建设工程安全C证职业资格考试试题(含答案)第7套.docx

  • 井下作业安全操作规程通用版.docx

    井下作业安全操作规程通用版.docx

  • 家庭教育培训工作方案_1.docx

    家庭教育培训工作方案_1.docx

  • 精选法院监察员年终个人工作总结.docx

    精选法院监察员年终个人工作总结.docx

  • 监督专员个人工作总结.docx

    监督专员个人工作总结.docx

  • 喷砂处理工艺标准.docx

    喷砂处理工艺标准.docx

  • 第1章 原子结构与元素周期律 第1节 原子结构 第1课时 原子核 核素课件 鲁科必修2.pptx

    第1章 原子结构与元素周期律 第1节 原子结构 第1课时 原子核 核素课件 鲁科必修2.pptx

  • 第1章 原子结构与元素周期律 第3节 元素周期表的应用 第1课时 认识同周期元素性质的递变规律课件 鲁科必修2.pptx

    第1章 原子结构与元素周期律 第3节 元素周期表的应用 第1课时 认识同周期元素性质的递变规律课件 鲁科必修2.pptx

  • 教师个人教学工作总结2020.docx

    教师个人教学工作总结2020.docx

  • 第1章 原子结构与元素周期律 1.2.1 元素周期律课件 鲁科必修2.pptx

    第1章 原子结构与元素周期律 1.2.1 元素周期律课件 鲁科必修2.pptx

  • 经典小区个人车位租赁合同.docx

    经典小区个人车位租赁合同.docx

  • 可再生能源与低碳社会期末考试第二套卷纸.docx

    可再生能源与低碳社会期末考试第二套卷纸.docx

  • 庐山导游词介绍3篇.docx

    庐山导游词介绍3篇.docx

  • 和平发展是两岸关系的主题.docx

    和平发展是两岸关系的主题.docx

  • 浅谈当前两岸关系的主要问题以及两岸发展的新形势_1.docx

    浅谈当前两岸关系的主要问题以及两岸发展的新形势_1.docx

  • 两岸关系和平发展.docx

    两岸关系和平发展.docx

  • 论东野圭吾小说创作特点研究——以白夜行为例.docx

    论东野圭吾小说创作特点研究——以白夜行为例.docx

  • 关于本文
    本文标题:国开《Android智能手机编程》单元1形考任务1.docx
    链接地址:https://www.badou.com/doc/68924.html
    收起
    展开