2011-11-05 36 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