2012-03-19 19 views
6

Khi bạn tải một bitmap từ các nguồn tài nguyên như vậy:Tài nguyên Android: Các bitmap được tải từ các tài nguyên được xử lý bộ nhớ thông minh như thế nào?

iv.setImageResource(R.drawable.image); 
  1. nếu bitmap được giảm về chất lượng bởi Scaletype, nó vẫn còn lưu lại toàn bộ bitmap gốc? (Tôi đoán có, bởi vì người ta có thể thay đổi Scaletype khi đang bay và bạn muốn có chất lượng đầy đủ.)
  2. nếu bạn tải cùng một ID tài nguyên vào nhiều ImageView, chỉ có một bitmap được lưu trong bộ nhớ?
  3. nó sẽ là thực hành tốt để quét qua phân cấp khung nhìn và tái chế thủ công các bitmap này (bằng cách trích xuất BitmapDrawable từ ImageView) trong onDestroy hoặc tôi có thể chắc chắn rằng hệ thống này thực hiện đúng lúc không?

Trả lời

0
  1. Có, nó sẽ giữ nguyên chất lượng.
  2. Không, Nó sẽ duy trì một đối tượng duy nhất.
  3. Nó sẽ được thực hiện bởi Hệ thống. Không cần phải bận tâm. Tuy nhiên, nó chờ đợi cho đến khi một số bộ đệm đã được lấp đầy với dữ liệu để gọi GC. Khi bộ đệm chứa đầy dữ liệu không mong muốn, thì tại một thời điểm các đối tượng sẽ bị xóa khỏi bộ nhớ. Nếu bạn vẫn muốn, bạn có thể chăm sóc.
+0

Vâng, đó là những gì tôi đã tìm. Tôi thấy rằng tôi cần phải thực hiện GC thủ công trên một số thiết bị để ngăn ngừa sự cố. Tôi vẫn không chắc liệu điều này chỉ là cố hữu đối với các thiết bị này hay tôi đang làm điều gì đó sai về cơ bản. Tôi đoán một cái gì đó cho một bài SO :-) Cảm ơn Logged –

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