2011-12-19 29 views
5

Tôi đang sử dụng bitmap trong một đoạn và tôi gọi bitmap.recycle() theo phương pháp onDestroy() của đoạn. Nhưng khá một vài lần tôi nhận được một ngoại lệmảnh Android khi gọi bitmap.recycle()

E/AndroidRuntime(4869): java.lang.RuntimeException: Canvas: trying to use a recycled bitmap [email protected]

Tôi cũng đã cố gắng làm điều này trong phương pháp onDestroyView() của mảnh nhưng vẫn có cùng một ngoại lệ.

bất cứ ai có thể đề xuất là những gì các giai đoạn tốt nhất của đoạn vòng đời nơi tôi nên gọi bitmap.recycle()

+0

hãy tham khảo: http://stackoverflow.com/questions/4959485/bitmap-bitmap-recycle-weakreference-and-garbage-collector –

Trả lời

0

bạn có thể tái chế hoặc trong onDestroyView hoặc onDestory, nhưng hãy chắc chắn rằng bạn đang tạo bitmap của bạn một lần nữa trong onCreate của bạn hoặc onCreateView .. khi bạn đang sử dụng cùng một tham chiếu bitmap một lần nữa nó là ném ngoại lệ tái chế. Vì vậy, bạn cần phải tạo bitmap một lần nữa khi bạn tạo phân đoạn hoặc bạn cũng có thể kiểm tra isRecycled() để biết bitmap của bạn đã được tái chế chưa

0

Tôi đã tìm ra giải pháp cho điều này, tôi đã gặp khó khăn với cùng một vấn đề

Điều tôi đã làm là tôi đã xóa tất cả các chế độ xem con của chế độ xem nội dung của mỗi đoạn. Sau khi tất cả các bản xem trước đều biến mất trong mỗi đoạn, tôi đã xuất bản (các) đoạn

Tôi tái chế các bitmap trên 'OnDestroy' của từng đoạn giống như bạn đang làm ngay bây giờ.

+0

bạn có thể đăng mã của mình không? – Kenshin

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