我正在製作一個應用程序,它可能會爲我節省一些時間 有幾個活動的單個佈局,其中一些視圖設置爲GONE,具體取決於正在使用哪個活動。「GONE」視圖是否對性能不利?
我知道在一個佈局中有大量的視圖會導致糟糕的性能。如果我有一個有大量觀點的活動,但是這些觀點中有很大一部分是去的,這個活動是否仍然表現不佳。也就是說,設置爲「無效」的觀點是否會造成業績惡化?如果是,他們是否要求處理能力低於VISIBLE或INVISIBLE視圖?
謝謝!
我正在製作一個應用程序,它可能會爲我節省一些時間 有幾個活動的單個佈局,其中一些視圖設置爲GONE,具體取決於正在使用哪個活動。「GONE」視圖是否對性能不利?
我知道在一個佈局中有大量的視圖會導致糟糕的性能。如果我有一個有大量觀點的活動,但是這些觀點中有很大一部分是去的,這個活動是否仍然表現不佳。也就是說,設置爲「無效」的觀點是否會造成業績惡化?如果是,他們是否要求處理能力低於VISIBLE或INVISIBLE視圖?
謝謝!
你應該知道了VS無形第一件事:
考慮對測量的影響。 哪一個更有效率取決於您改變視圖的可見性 。
例如,如果視圖是不可見的大部分時間, 使其GONE很可能會更有效,因爲系統 不會受到不必要的測量和鋪設出你看不見的看法 每當它需要調整屏幕上的其他視圖。另一方面,如果視圖頻繁地在可見和不可見 之間變化,您可能會從INVISIBLE獲得更好的性能,因爲您可能會在每次轉換時避免額外的度量/佈局。
Here is an interesting answer。我想知道和你一樣的事情,答案是View.GONE
消耗更多的內存,而不是簡單地在視圖上調用removeView(view)
。但是,GONE
視圖會消耗比View.VISIBLE
更少的內存,因爲它們不需要繪製。
存儲金額進行比較,這樣的:
View.VISIBLE
>View.GONE
>removing the view from the container
我做的是對的看法不消耗大量的內存(比如一個TextView)使用View.GONE
和使用parent.removeView(view)
上有很多內存的視圖(如WebView);
如何從View中清除內存使用者並使用View.GONE?在「WebView」的情況下,停止在其中呈現HTML或「ImageView」,以移除圖像。 –
我不確定。 – anthonycr
這些視圖仍然需要充氣,它們將佔用內存,但它們不會成爲視圖層次結構的測量和佈局過程的一部分。 – Luksprog
+1,另外 - 考慮一下,你只是修改它的視覺方面,可見或不可見,消失在本質上幾乎是一樣的,只是不佔用屏幕上的「物理」空間。 – g00dy
我可以問,爲什麼你不使用不同的佈局,如果一些'活動'會有大量的'GONE'視圖? – codeMagic