Theo phát triển Android trang web, định nghĩa Bitmap.recycle()
phương pháp là:Khi nào (nếu có), tôi có nên sử dụng Bitmap.recycle() không?
miễn phí đối tượng có nguồn gốc gắn liền với bitmap này, và xóa các tham chiếu đến dữ liệu pixel
tôi đã phát triển một số các ứng dụng tạo/giải mã rất nhiều ảnh bitmap và đặt đối tượng bitmap kết quả là ImageView
s. Đôi khi tôi đã có những trường hợp ngoại lệ nổi tiếng như:
bitmap kích thước excceded ngân sách vm
và
ra lỗi bộ nhớ
Ngoài ra tôi chắc chắn Tôi không có bất kỳ rò rỉ bộ nhớ nào có thể gây ra điều đó.
Sau nhiều tìm kiếm, tôi phát hiện ra phương pháp "tái chế" và sử dụng nó để giải phóng bộ nhớ riêng của bitmap khi không còn cần thiết nữa. Dường như nó đã giúp rất nhiều.
Tôi hỏi nếu đó là điều tôi phải làm trong trường hợp này, bởi vì Tôi biết hệ thống đang thực hiện việc này mà không gọi nó rõ ràng (có phải không? Có thể tôi sai).
Tôi có nên sử dụng phương pháp này trong các tình huống như thế này không?
Trong trường hợp nào tôi nên sử dụng phương pháp này?
Tôi có nên sử dụng phương pháp này không?
cảm ơn trước.
UPDATE:
google posted this hướng dẫn thời gian gần đây, trong đó nói rằng:
Trên Android 2.3.3 (cấp API 10) và thấp hơn, sử dụng rác() được khuyến khích. Nếu bạn đang hiển thị số lượng lớn dữ liệu bitmap trong ứng dụng của mình, bạn có thể gặp phải lỗi OutOfMemoryError. Phương thức recycle() cho phép ứng dụng lấy lại bộ nhớ càng sớm càng tốt.
Không cần thiết phải gọi 'recyle'. Nó có thể giúp, nhưng chỉ khi bạn sử dụng nó một cách chính xác. Nó thực sự dễ dàng hơn để tạo một 'WeakReference' thành đối tượng' Bitmap' của bạn và trả về thay vào đó. [Bạn nên xem bài nói chuyện trên Google IO này] (http://www.youtube.com/watch?v=_CruQY55HOk) – adneal
@aneal: cảm ơn, đã xem video đó từ lâu rồi. –