2013-07-26 23 views
31

Tôi đang tạo một ứng dụng mà nó có thể tiết kiệm thời gian cho tôi có một bố cục duy nhất cho một số hoạt động, với một số chế độ xem được đặt thành GONE tùy thuộc vào hoạt động nào đang được sử dụng.Quan điểm "GONE" có gây bất lợi cho hiệu suất không?

Tôi biết rằng có một số lượng lớn lượt xem trong bố cục có thể dẫn đến hiệu suất kém. Nếu tôi có một hoạt động với số lượt xem lớn, nhưng một phần lớn trong số lượt xem đó là GONE, hoạt động này vẫn hoạt động kém. Tức là, các lượt xem được đặt thành GONE có góp phần làm giảm hiệu suất không? Nếu có, họ có yêu cầu sức mạnh xử lý ít hơn so với tầm nhìn VISIBLE hoặc không thể xem?

Cảm ơn!

+6

Các lượt xem đó sẽ vẫn cần được tăng cao và chúng sẽ chiếm bộ nhớ nhưng chúng sẽ không nằm trong quá trình đo lường và bố cục của hệ thống phân cấp chế độ xem. – Luksprog

+0

+1 cho rằng, ngoài ra - suy nghĩ về nó, bạn chỉ cần sửa đổi các khía cạnh trực quan của nó, có thể nhìn thấy hoặc vô hình, đi là thực tế giống nhau của tự nhiên, chỉ chiếm không gian "vật lý" trên màn hình. – g00dy

+0

Tôi có thể hỏi tại sao bạn không sử dụng các bố cục khác nhau nếu một số 'Hoạt động' sẽ có số lượng lớn các lượt xem' GONE'? – codeMagic

Trả lời

22

Điều đầu tiên bạn nên biết về đi vs vô hình:

  • View.GONE Quan điểm này là vô hình, và nó không có bất kỳ không gian cho mục đích bố trí.
  • Chế độ xem.INVISIBLE Chế độ xem này là vô hình nhưng vẫn chiếm không gian cho mục đích bố cục.

Suy nghĩ về tác động đến đo lường. Cái nào hiệu quả hơn tất cả phụ thuộc vào tần suất bạn đang thay đổi chế độ hiển thị của chế độ xem.

Ví dụ nếu chế độ xem là không rõ ràng cho một phần lớn thời gian, làm cho nó GONE có lẽ sẽ hiệu quả hơn, bởi vì hệ thống sẽ không được đo không cần thiết và đẻ ra cái nhìn vô hình của bạn bất cứ khi nào nó cần phải điều chỉnh các chế độ xem khác trên màn hình.

Mặt khác, nếu chế độ xem thay đổi giữa hiển thị và vô hình thường xuyên, bạn có thể nhận được hiệu suất tốt hơn từ INVISIBLE khi bạn có khả năng tránh biện pháp/bố cục bổ sung trên mỗi chuyển đổi.

9

Here is an interesting answer. Tôi đã tự hỏi điều tương tự như bạn, và câu trả lời là View.GONE tiêu thụ nhiều bộ nhớ hơn là chỉ cần gọi removeView(view) trên màn hình. Tuy nhiên, GONE chế độ xem sẽ tiêu thụ ít bộ nhớ hơn View.VISIBLE vì chúng không cần vẽ.

Số tiền ký ức so sánh như thế này:

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

Những gì tôi làm là sử dụng View.GONE trên quan điểm rằng không tiêu thụ nhiều bộ nhớ (giống như một TextView) và sử dụng parent.removeView(view) trên các khung nhìn có rất nhiều bộ nhớ (như một WebView);

+0

Điều gì về thanh toán bù trừ người tiêu dùng bộ nhớ từ 'View' và sử dụng' View.GONE'? Trong trường hợp 'WebView', dừng hiển thị HTML trong đó, hoặc' ImageView', xóa hình ảnh. –

+1

Tôi không chắc chắn về điều đó. – anthonycr

Các vấn đề liên quan