2011-11-05 34 views
4

在4.0版本中,他们引入了一个新的Property类,可以帮助您一般地设置或获取对象的内部值。在这里描述(向下滚动一下):http://developer.android.com/sdk/android-4.0.html#api并在这里定义:http://developer.android.com/reference/android/util/Property.htmlAPI14中的新Property属性如何比内部getter/setter更好?

同时,他们说要避免内部获取/设置者。 http://developer.android.com/guide/practices/design/performance.html#internal_get_set

我是否错过了Property类如何不违反此规则?我知道这是在编码方面的好处,但不在性能方面。

想法?

+0

是否有任何替代物业类?在较低的Android版本上使用。我想使用循环进度按钮库。 –

回答

2

我是否缺少有关Property类如何违反此规则的内容?

它“违反”规则。然而,这个规则并不普遍,因为你引用的文件在一开始就要付出很大努力试图解释。该文件概述了“微观优化”。正如文件所述,这些“几乎不会造成或破坏你的软件”。相反,它们是你可能希望在需要的地方进行优化的东西。

您不需要避免内部获得者和设置者,除非他们导致特定的性能问题。通常可以通过使用Traceview来确定这一点,并在getter和setter中看到大量时间。因此,例如,在一个大型数据集的紧密循环中,试图避免获取者和设置者可能是值得的。除此之外,使用getter和setter不会给你或用户带来任何实质性的痛苦。再次,让Traceview等工具成为您的指南。

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

+0

好的,我很高兴听到这个。我通常来自J2EE背景,习惯于getter/setter。我想我会尝试启动应用程序已经“调整”性能,所以也许我应该尝试离开内部g/s过程。无论如何,我一定会注意到它是一个可以清理的地方。感谢您分享您的专业知识! – dispake