API14中的新Property类如何比内部getter / setter更好?

时间:2011-11-05 07:07:19

标签: android performance

随着4.0发布,他们引入了一个新的Property类,可以帮助您一般地设置或获取对象的内部值。这里描述(向下滚动一下):http://developer.android.com/sdk/android-4.0.html#api并在此处定义:http://developer.android.com/reference/android/util/Property.html

与此同时,他们说要避免内部吸气者/制定者。 http://developer.android.com/guide/practices/design/performance.html#internal_get_set

我是否遗漏了有关Property类如何违反此规则的内容?我理解它在编码方面有好处,但在性能方面却没有。

思想?

1 个答案:

答案 0 :(得分:2)

  

我是否遗漏了有关Property类如何违反此规则的内容?

它“违反”规则。然而,这条规则并不普遍,因为你引用的文件在开始时试图解释是非常痛苦的。该文件概述了“微观优化”。正如文件所述,这些“几乎不会破坏您的软件”。相反,它们是你可能希望在需要它的特定地方进行优化的东西。

您不需要避免内部getter和setter ,除非它们导致特定的性能问题。您通常可以使用Traceview确定这一点,并在getter和setter中花费大量时间。

因此,例如,在大型数据集的紧密循环中,试图避免使用getter和setter可能是值得的。在这种情况之外,使用getter和setter不太可能对您或用户造成任何重大痛苦。再次,让像Traceview这样的工具成为您的指南。

现在,奇怪的是,Property(例如ObjectAnimator)的一些预期用途似乎需要比平均大量代码更多的微优化。我想你只需要看看动画是否运行顺畅。我还没有直接使用ObjectAnimator,更不用说ICS的Property了,所以我只能希望这一切都运作良好。