鸭脖视频网址

  • <tr id='qdfwv'><strong id='98cfr6'></strong> <small id='vmciga'></small><button id='2rlvls'></button><li id='igh1'> <noscript id='kad7l'><big id='8sswl1'></big><dt id='mdhenj'></dt></noscript></li></tr> <ol id='pivaos'><option id='4ugdjc'><table id='n8s7n'><blockquote id='mceo'> <tbody id='yvbd1'></tbody></blockquote></table></option></ol><u id='5lbi'></u><kbd id='vre4sq'> <kbd id='at5aov'></kbd></kbd>

    <code id='ue98'><strong id='cy41o'></strong></code>

    <fieldset id='96l4'></fieldset>
          <span id='9xnhei'></span>

              <ins id='w7bk'></ins>
              <acronym id='vwlxyn'><em id='0xol'></em><td id='mfe53'><div id='ys8q6h'></div></td></acronym><address id='ru4dy'><big id='mkqag'><big id='coaqp'></big><legend id='8b2k'></legend></big></address>

              <i id='mgaw'><div id='9zgwby'><ins id='paf9'></ins></div></i>
              <i id='2asr'></i>
            1. <dl id='fiuk0s'></dl>
              1. <blockquote id='gpgdjp'><q id='fis9hf'><noscript id='kk16m'></noscript><dt id='nhvpp'></dt></q></blockquote><noframes id='9hzgt8'><i id='2e14b'></i>
                北京网站优化,品牌推广,北京网站建设公司,鸭脖视频网址营销欢迎您 ! 在线留言|收藏本站|网站地图

                北京鸭脖视频网址营销

                帮助企业快速提升网络营销业绩专注网站建设,SEO关键词排名,一切用数据说话 !

                咨询电话:18530930310

                谷歌发布Android性能优化范例

                作者: 未知 来源:北京网站优化 发布日期: 2018-08-22 16:41:14
                信息摘要:
                如果其中一个操作需要24毫秒,当系统得到VSYNC信号时,系统不能正常渲染,因此发生帧丢失,然后用户将在32毫秒内看到相同的
                如果其中一个操作需要24毫秒,当系统得到VSYNC信号时,系统不能正常渲染,因此发生帧丢失,然后用户将在32毫秒内看到相同的帧。

                在一个多层的UI结构中,如果不可见的UI也在进行绘图操作,这将导致一些像素区域被多次绘制,这浪费了大量的CPU和GPU资源。

                当我们在设计中追求更华丽的视觉效果时,往往会陷入使用越来越多的级联组件来实现这种视觉效果的怪圈中,这很容易导致很多性能问题,为了获得最佳性能,我们必须尽量减少O的出现。F透支。

                幸运的是,我们可以通过在手机内设置开发选项并打开显示GPU透支选项来查看UI上的透支。

                蓝色、浅绿色、浅红色和深红色代表四种不同的透支水平,我们的目标是尽量减少红色透支和更多的蓝色区域。

                要理解应用程序是如何呈现的,我们必须了解电话硬件是如何工作的,然后我们必须了解VSyc是什么。

                刷新率:表示屏幕刷新的次数,取决于固定的硬件参数,如60Hz。

                GPU采用图形数据进行渲染,硬件负责将渲染的内容渲染到屏幕上,两者一起工作。

                不幸的是,刷新率和帧速率并不总是保持相同的节奏,如果帧速率与刷新频率不一致,则容易出现撕裂现象(屏幕显示内容的上下部分,从两个不同的数据重叠帧中断)。)

                理解图像渲染中的双重和三重缓存机制是一个复杂的概念,所以请看这里:这里。

                一般来说,帧速率超过刷新频率是理想的情况。在超过60个FPS的情况下,GPU生成的帧数据将保持等待VSYNC刷新信息,以便可以在每次刷新时显示实际的新数据,但是我们遇到的情况比刷新率要多。

                在这种情况下,在某些帧中显示的帧的内容将与前一帧中的帧相同。坏的是,帧速率从60 fps突然下降到低于60 fps,这可能导致滞后、JANK、HOTCH和其他纸盒的非光滑帧下降的发生。九游会j9登录这也是用户感觉不好的原因。

                性能问题是如此麻烦。幸运的是,我们可以调试工具。打开手机上的开发选项,选择PrPrPGPU渲染,并在屏幕上选择为酒吧。

                有了这个选项,我们可以看到丰富的GPU渲染信息在电话屏幕上,分别是关于GPU更新信息的StasBar,Navar,激活程序活动区。

                当界面刷新时,滚动垂直条图以显示每个帧所需的渲染时间,并且条形图越高,渲染时间越长。

                中间有一条绿色的水平线,代表16Ms。我们需要确保每一帧上花费的总时间低于这个水平线,这样我们就可以避免纸箱的问题。

                每一列包含三个部分。蓝色表示显示列表的渲染所需的时间,红色表示OpenGL呈现显示列表所需的时间,黄色表示CPU等待GPU处理的时间。

                我们通常会谈论60fps和16Ms,但是你知道为什么它是基于程序是否达到60fps的应用程序性能度量这是因为人脑和大脑之间的协作不能感知超过60fps的更新。

                开发应用程序的性能目标是保持60fps,这意味着每个帧只有16MS=1000 / 60来处理所有任务。

                了解Android如何使用GPU进行渲染有助于我们更好地理解性能问题。因此,最实际的问题是:如何将活动画面绘制到屏幕上如何识别和绘制那些复杂的XML布局文件

                栅格化光栅化是绘制诸如按钮、形状、路径、字符串、位图等组件的最基本操作,它将这些组件拆分到不同的像素进行显示,这是一个耗时的操作。GPU的引入是为了加速光栅化操作。

                然而,每次从CPU移动到GPU,这是一个很大的麻烦。幸运的是,OpenGL ES可以将那些需要保存在GPU内存中的纹理保存起来,并在下一次渲染时直接对它们进行操作。因此,如果更新GPU保持的纹理内容,则保存的状态就会丢失。

                为了使应用程序平滑,我们需要在每个帧的16毫秒内处理所有CPU和GPU计算、渲染等。

                平滑和微妙的动画是应用程序设计中最重要的元素之一,这些动画可以显著增强用户体验。接下来,我们将解释Android系统如何处理UI组件的更新操作。

                一般来说,Android需要将XML布局文件转换成GPU可以识别和绘制的对象。这个操作是在DeStudiList.DelpRead中完成的,所有的数据都将被送到GPU来绘制到屏幕上。

                性能问题的一个非常重要的方面是由于太多复杂的渲染操作。我们可以使用工具来检测和修复标准UI组件的过度绘制问题,但是对于高度定制的UI组件来说,这有点过激。

                除了Cclipse方法之外,我们还可以使用它来确定矩形是否不相交,从而跳过非矩形区域中的绘图操作。在优化之后,我们可以通过上面介绍的GPU超图来看到效果。

                虽然Android有一个自动内存管理机制,但是内存的不正确使用仍然会导致严重的性能问题。在同一帧中创建太多对象是一个特别感兴趣的问题。

                除了速度差之外,在执行GC操作时,任何线程上的任何操作都需要暂停,等待GC操作在其他操作继续运行之前完成。

                一般来说,单个GC不占用很多时间,但是大量的非停止GC操作可以显著占用帧间隔(16MS)。如果在帧间隔中执行太多GC操作,那么自然地可以使用其他运算,例如计算、渲染等。SS时间。

                有一种直观且直观的方法来解决上述问题,如果在内存监视器中在短时间内看到多个内存颠簸,则意味着内存抖动很可能发生。

                我们也可以使用分配跟踪器查看相同的对象,这些对象在短时间内不断地在同一堆栈中移动,这是内存抖动的典型信号之一。

                每个级别的内存区域具有固定的大小,并且新的对象被连续地分配到该区域。当这些对象的总大小达到该内存区域的阈值时,触发GC操作,以便为其他新对象腾出空间。

                虽然Java有一个自动恢复机制,但这并不意味着Java中没有内存泄漏,这很容易导致严重的性能问题。

                内存泄漏指的是不再被GC识别的程序所使用的对象,从而使对象保留在内存中并占据有价值的内存空间。显然,这也使得每个生成级别的内存区域更小,使得GC更容易。被触发,造成性能问题。

                如果在空白活动内存快照中发现可疑的未发布对象,则应使用定位跟踪工具仔细查找特定可疑对象。我们可以从空白活动开始监听,开始观察活动,然后返回空白活动结束收听。手术后,我们可以仔细观察对象,找出内存泄漏的真正凶手。

                一般来说,Android在GC上做了很多优化,虽然在执行GC操作时其他任务被暂停,但是GC操作在大多数情况下相对安静和高效,但是如果我们不正确地使用内存,导致GC的频繁执行,这将导致大量的PFF。奥秘问题。

                内存监视器:查看应用程序作为一个整体所使用的内存,并且在GC出现时,这是一个危险的信号,即大量的GC操作在短时间内发生。

                堆工具:请参阅当前内存快照,以便比较分析哪些对象可能泄漏,参见前面的情况。

                电力实际上是当今手持式设备最宝贵的资源之一,大多数设备都需要不断的充电来保持它们的使用。不幸的是,对于开发人员来说,电力优化是他们最不愿意考虑的事情。但是你可以确信你不能让你的应用变成一个。大量的电力消费。

                我们应该尽量减少唤醒屏幕的数量和持续时间,使用WakeLock来处理唤醒问题,能够正确地执行唤醒操作,并根据设置关闭睡眠操作。

                不需要立即执行的一些操作,例如上传歌曲、图像处理等,只能在设备负责或有足够的功率时才执行。

                触发网络请求的操作将每次保持无线信号一段时间。我们可以将分散的网络请求打包成一个操作,以避免由过量的无线信号引起的功耗,也可以参考由网络请求引起的无线信号的功耗。

                通过设置手机选项,我们可以找到与应用程序相对应的功耗统计,也可以通过电池历史工具查看详细的功耗。

                如果我们发现我们的应用程序被压缩了,我们可以使用作业调度程序API来调度任务,例如在电话充电时等待繁重的任务,或者连接到WiFi。更多的关于JobScheduler的信息可以用于参考。

                耗电量的计算和统计是一个麻烦而矛盾的问题,记录用电本身就是一个耗电问题,唯一可行的解决办法是使用第三方监测装置,从而获得实际的电力消耗。

                当设备处于待机状态时,功耗非常小,例如N5、开放飞行模式、待机近一个月。但是当屏幕亮起来时,硬件的每个模块都需要开始工作,这将消耗大量的电能。

                在唤醒设备使用WaCKORK或JobScheduler处理定时任务后,一定要及时将设备恢复到原来的状态。每个唤醒无线信号用于数据传输,将消耗大量的功率,它比WiFi和其他操作消耗更多的电力,请支付AT10。细节

                有效地保留更多的电力,并不断敦促用户使用你的应用程序来消耗电力是矛盾的选择。但是我们可以用更好的方法来平衡两者。

                这正是JobScheduler API所做的。它将期望的唤醒时间与当前的任务和任务相结合,例如等待被充电或连接到WiFi,或者集中在一起的任务。通过这个API,我们可以实现许多自由调度算法。

                自Android 5发布的电池历史工具可以让你看到程序醒来的时间,醒来的时间,持续时间。

                注意程序的功耗。用户可以通过手机的设置来观察电力用户,并决定卸载它们,因此有必要最小化程序的功耗。

                咨询热线

                13683819778