Tôi thực sự có hai câu hỏi mà họ đang loại liên quan vì vậy đây họ đi như một ...câu hỏi TreeViewer Lazy và thu nhập hoãn lại
Làm thế nào để đảm bảo thu gom rác thải của các nút cây không được hiển thị hiện thời sử dụng TreeViewer
(SWT.VIRTUAL
) và ILazeTreeContentProvider
? Nếu nút có 5000 trẻ em, một khi chúng được hiển thị bởi người xem, chúng sẽ không bao giờ buông bỏ, do đó Lỗi bộ nhớ nếu cây của bạn có số lượng nút và lá lớn và kích thước heap không đủ lớn. Có một số loại thực hành tốt nhất để tránh rò rỉ bộ nhớ, gây ra bởi chế độ xem không bao giờ bị đóng giữ một thanh thu nhỏ với số lượng lớn dữ liệu (hàng trăm nghìn đối tượng hoặc thậm chí hàng triệu)? Có lẽ có một số giao diện gọi lại cho phép linh hoạt hơn với các yếu tố người xem/nhà cung cấp nội dung?
Có thể kết hợp deffered (DeferredTreeContentManager
) VÀ lười biếng (ILazyTreeContentProvider
) tải cho một đơn TreeViewer
(SWT.VIRTUAL
)? Nhiều như tôi hiểu bằng cách xem xét các ví dụ và API, bạn chỉ có thể sử dụng một trong hai thời điểm cụ thể nhưng không thể kết hợp cả hai, ví dụ: , chỉ tìm nạp các con hiển thị cho một nút đã cho VÀ tìm nạp chúng trong một chuỗi riêng biệt bằng cách sử dụng API công việc. Điều làm phiền tôi là cách tiếp cận hoãn lại tải TẤT CẢ trẻ em. Mặc dù trong một chủ đề khác, bạn vẫn tải tất cả các phần tử mặc dù chỉ có một tập con tối thiểu được hiển thị cùng một lúc.
tôi có thể cung cấp các ví dụ mã cho những câu hỏi của tôi nếu có yêu cầu ...
Tôi hiện đang phải vật lộn với những bản thân mình nên nếu tôi quản lý để đưa ra một cái gì đó trong khi chờ đợi tôi sẽ sẵn sàng chia sẻ nó ở đây.
Cảm ơn!
Kính trọng, Svilen
để tải chậm, người xem báo cáo với nhà cung cấp, rằng một phần tử cụ thể sẽ được hiển thị (do cuộn hoặc mở rộng). các triển khai trì hoãn hiện tại có thể dễ dàng đạt được bằng cách sử dụng một công việc trong các phương thức của nhà cung cấp nội dung. vấn đề với cả hai phương pháp, tại sao chúng có thể độc quyền: tải chậm giả định bạn biết phần tử đếm trước và thay thế nội dung của trình xem trong thời gian nội dung được hiển thị. bạn không muốn tải nội dung (ví dụ: từ tài nguyên đã nhớ), mỗi khi người dùng cuộn hoặc mở rộng nội dung nào đó. – benez