मैं वास्तव में दो प्रश्न पूछना चाहते हैं, लेकिन वे एक तरह से तो यहां से संबंधित हैं वे एक के रूप में जाना ...लेज़ी और आस्थगित TreeViewer सवाल
पेड़ नोड्स है कि वर्तमान में TreeViewer
का उपयोग कर प्रदर्शित नहीं होते हैं की कचरा संग्रहण सुनिश्चित करने के लिए कैसे (SWT.VIRTUAL
) और ILazeTreeContentProvider
? यदि किसी नोड में 5000 बच्चे हैं, तो दर्शक द्वारा प्रदर्शित किए जाने के बाद उन्हें कभी भी जाने नहीं दिया जाता है, इसलिए मेमोरी त्रुटि से बाहर अगर आपके पेड़ में नोड्स और पत्ते की बड़ी संख्या है और पर्याप्त ढेर आकार नहीं है। क्या स्मृति की रिसाव से बचने के लिए कुछ प्रकार का सबसे अच्छा अभ्यास है, जिसके कारण डेटा की बड़ी मात्रा (हजारों वस्तुओं या यहां तक कि लाखों) के साथ एक वृक्षदृश्य धारण करने वाले कभी भी बंद दृश्य के कारण नहीं है? शायद कुछ कॉलबैक इंटरफ़ेस है जो दर्शक/सामग्री प्रदाता तत्वों के साथ अधिक लचीलापन की अनुमति देता है?
यह संभव एक भी TreeViewer
(SWT.VIRTUAL
) के लिए deffered गठबंधन करने के लिए (DeferredTreeContentManager
) और आलसी (ILazyTreeContentProvider
) लोड हो रहा है है? जितना मैं समझता हूं कि उदाहरणों और एपीआई को देखकर, किसी भी समय किसी एक का उपयोग करना संभव है, लेकिन दोनों संयोजन के साथ नहीं, उदाहरण के लिए , केवल दिए गए नोड के लिए दृश्यमान बच्चे लाएं और उन्हें जॉब एपीआई का उपयोग करके अलग थ्रेड में लाएं। मुझे परेशान करता है कि डिफरर्ड दृष्टिकोण सभी बच्चों को लोड करता है। हालांकि एक अलग थ्रेड में, आप अभी भी सभी तत्व लोड करते हैं, भले ही केवल एक न्यूनतम सबसेट एक बार प्रदर्शित होता है।
मैं अपने सवालों के कोड उदाहरण प्रदान कर सकते हैं यदि आवश्यक हो तो ...
मैं वर्तमान में तो अगर मैं इस बीच में कुछ के साथ आने के लिए प्रबंधन मैं खुशी इसे यहाँ साझा करेंगे उन के साथ अपने आप संघर्ष कर रहा हूँ।
धन्यवाद!
सादर, Svilen
आलसी लोडिंग के लिए, दर्शक प्रदाता को रिपोर्ट करते हैं कि एक विशिष्ट तत्व प्रदर्शित होने जा रहा है (स्क्रॉलिंग या विस्तार के कारण)। सामग्री प्रदाता विधियों में नौकरी का उपयोग करके वर्तमान स्थगित कार्यान्वयन आसानी से हासिल किया जा सकता है। दोनों विधियों के साथ समस्या, वे अनन्य क्यों हो सकते हैं: आलसी लोडिंग मानती है कि आप तत्व की गणना पहले से ही जानते हैं, और सामग्री प्रदर्शित होने के समय दर्शक की सामग्री को प्रतिस्थापित करें। जब भी उपयोगकर्ता स्क्रॉल या कुछ विस्तार करता है, तो आप सामग्री को लोड नहीं करना चाहते हैं (उदा। रिमोर संसाधन से)। – benez