2013-11-25 114 views
0

讓我們以Activity類爲例,我已經看到許多開發人員在類中使用私有變量來存儲小部件的指針,並初始化他們在創造事件。什麼是這樣做的海豚?是不是通過分配一個我們並不需要的新變量來浪費資源?我的意思是,我們總是可以通過調用findviewById來獲取對象,並且在任何情況下在需要時將其存儲到方法變量中。在Android中,在類中聲明變量時的最佳做法是什麼

+1

如果在多個方法中引用相同的視圖?更有意義的是隻需「查找」一次,你不覺得嗎? –

+0

是的,但從性能和資源節約的角度來看,什麼是最好的? – spacebiker

+1

如果你只需要找一次,性能總是更好。 –

回答

1

如果使用該視圖的許多實例,代碼變得更易於讀取變量。

另外,在每次使用時都要查看它,尤其是在使用量很大的情況下。即使假設最佳搜索算法,findViewById()比變量訪問花費的時間更長。

無論如何這是一種微觀優化;這兩個內存都是從一個額外的變量中觸發的,並且find的查找時間非常小,用戶不會注意到其中的差異。編碼人員花費的時間來解決這些問題在別處可能會更好。

+0

是的,這就是我的意思。所以,通過使用findViewById,我們不是在訪問與變量相同的內存引用嗎?我明白它可以幫助開發人員以更清晰的方式輸入代碼,訪問'findViewById(R.id ..)'的'mMyTextView'總是更容易,但我想知道哪個是最好的技術從時間或資源節約的角度來看。 – spacebiker

+1

給定一個ID,花在獲取該內存引用上的時間。看到我上面的評論:你想要什麼**更多** - 速度或內存?順便提一句,這兩者都可以忽略不計。無論如何這都是微觀優化。你不應該花太多時間去追求這些。 –

1

如果您有很多撥打findViewById()的電話,那麼這裏有很多不同的地方,可能意味着您錯誤地看到錯誤。通過將視圖放入一個字段中,您可以確保只有一點代碼才能正確使用。不要重複自己。相反,儘管如此,您需要確保在代碼有機會初始化之前不要嘗試訪問該字段。這在實踐中通常不是問題,但我傾向於使我的類儘可能不可變,並且不能在構造函數返回rankles之後的某個時間初始化字段。

相關問題