为什么文档建议您减少Android设备上的透支?

时间:2017-01-19 13:55:30

标签: android ios performance

建议Android开发人员减少其应用中的透支。

https://developer.android.com/topic/performance/rendering/overdraw.html

iOS开发人员被警告过度透支,但并未强调。相反,他们可以选择为混合图层着色。

https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/MeasuringGraphicsPerformance.html

根据我对iOS CoreGraphics的理解,将图层放入GPU中,GPU在渲染时将它们组合在一起。当未混合像素(Alpha通道)时,计算要显示的像素更容易。

导致Android专注于透支的技术差异是什么?你能提供技术参考吗?

2 个答案:

答案 0 :(得分:2)

我想这主要是由于Painter's AlgorithmZ-Buffering之间的差异。

使用前者,您可以根据布局从前到后绘制每个视图,并根据需要重新绘制像素。这可能会导致相当多的浪费,因为无论它们是否被遮挡,都需要渲染像素。

Z-Buffering可以通过使用Z-Culling来改善这一点,如果您的图层被正确分类,可以提前消除某些像素。

最初,Android使用完全基于软件的渲染堆栈,因此Z-Buffering不可用,据我所知,使用了简单的Painter算法。 iOS始终基于硬件加速渲染,因此可以(某些)利用Z-Buffering。但是自Android 3.0以来,Android也开始实现基于硬件的渲染。

但实际情况并非如此简单。首先,使用硬件层并进行深度排序也会带来一些成本,如果处理非常简单的绘图操作(如移动应用程序)(例如简单地绘制位图,与基于复杂像素的闪存操作相反),过度绘制像素实际上可能比试图避免它更便宜。处理透明胶片时,事情显然也变得更加复杂。

我认为Android和iOS都使用了多种技术,因此Overdraw很可能会出现在两个平台上。在任何情况下,尝试避免不必要的重叠都试图完全避免问题,这是一个好主意。

答案 1 :(得分:-1)

iOS开发人员确实被要求避免透支:

  

当您的应用或其内容不可见时,消除绘图;例如,当您的应用在后台时,或其内容被其他视图,剪辑或屏幕外遮挡时。

来自您提到的链接。