47

私は、使用されているアクティビティに応じて一部のビューを GONE に設定して、いくつかのアクティビティに対して単一のレイアウトを使用することで時間を節約できるアプリを作成しています。

レイアウトに多数のビューがあると、パフォーマンスが低下する可能性があることを知っています。多数のビューを含むアクティビティがあったが、それらのビューの大部分が GONE になった場合、このアクティビティのパフォーマンスは依然として低下します。つまり、GONE に設定されたビューはパフォーマンスの低下に寄与しますか? はいの場合、VISIBLE ビューまたは INVISIBLE ビューよりも処理能力が少なくて済みますか?

ありがとう!

4

2 に答える 2

36

ゴーン vs インビジブルについて最初に知っておくべきこと:

  • View.GONE このビューは非表示で、レイアウト用のスペースを必要としません。
  • View.INVISIBLE このビューは非表示ですが、レイアウトのためにスペースを占有します。

測定への影響を考える。どちらがより効率的かは、ビューの可視性を変更する頻度によって異なります。

たとえば、ビューがほとんどの時間表示されていない場合、システムが画面上の他のビューを調整する必要があるたびに、不必要に非表示のビューを測定してレイアウトすることがないため、GONE にする方がおそらく効率的です。

一方、ビューが可視と不可視の間で頻繁に変化する場合は、各遷移で余分なメジャー/レイアウトを回避できる可能性があるため、INVISIBLE からパフォーマンスが向上する可能性があります。

于 2013-07-26T14:15:26.723 に答える
19

ここに興味深い答えがあります。私はあなたと同じことを考えていました.答えは、View.GONE単にビューを呼び出すよりも多くのメモリを消費することremoveView(view)です. ただし、ビューは描画する必要がないため、GONE消費するメモリは少なくなります。View.VISIBLE

メモリ量は次のように比較します。

View.VISIBLE> View.GONE>removing the view from the container

私がしているView.GONEのは、大量のメモリを消費しないビュー (TextView など) で使用parent.removeView(view)し、大量のメモリを使用するビュー (WebView など) で使用することです。

于 2013-07-26T14:16:05.017 に答える