2016-10-31 23 views
5

Tôi tự hỏi nếu runnable được chuyển đến View.postDelayed sẽ tự động bị xóa khi chế độ xem được tách riêng khỏi bố mẹ.Tham chiếu bị rò rỉ Android View.postDelayed?

Tôi đã tìm nguồn của lớp View và nó được đăng lên một số Handler mà nó được đưa ra bên ngoài. Nhưng vòng đời của người xử lý đó không rõ ràng.

Có ai biết câu trả lời không?

+0

Tôi cho rằng bạn có thể thử nghiệm điều này bằng cách trì hoãn và phá hủy rất lâu hoạt động. –

+0

có, nó sẽ bị rò rỉ, bạn không thể sử dụng 'Xem # removeCallbacks'? – pskink

+0

Đây là tùy chọn, nhưng tôi đã suy nghĩ có thể là Android là thông minh để loại bỏ nó chính nó –

Trả lời

2

Tôi tự hỏi nếu runnable được chuyển đến View.postDelayed sẽ tự động được xóa khi chế độ xem được tách ra khỏi bố mẹ.

Sau khi phương thức chạy kết thúc để thực thi. Nếu bạn có một vòng lặp vô hạn vào nó, nó sẽ không bao giờ bị loại bỏ và do đó, bạn sẽ bị rò rỉ chế độ xem và Hoạt động sử dụng chế độ xem đó

+0

Hãy giả sử nó không phải là vòng lặp nhưng khoảng thời gian trễ là lớn. Vì nó không được thực hiện nhưng nó giữ tất cả các tham chiếu cũng –

+0

cùng áp dụng trong trường hợp này. Bạn sẽ bị rò rỉ bộ nhớ cho đến khi bộ giải mã trễ và runnable được thực thi. Chỉ khi đó tất cả các tài nguyên có thể được giải phóng – Blackbelt

+0

Quá xấu mà chế độ xem không 'clearCallbacks' khi tách rời – Jozua

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