2013-11-20 8 views
20

मैंने एक क्वेरी से लौटाए गए डेटा द्वारा एकत्रित एक सूची दृश्य बनाया है।
यह काम करता है, लेकिन LogCat में मैं संदेश मिल गया है:कर्सर विंडो: विंडो पूर्ण है

Cursor Window: Window is full: requested allocation 444 bytes, free space 363 bytes, window size 2097152 bytes 

और यह/लोड करने के लिए कुछ मिनट का उपयोग करता ListView visualizing।

मेरी क्वेरी स्ट्रिंग/इंट/डबल की 3700 पंक्तियां लौटाती है, जिनमें से प्रत्येक 30 कॉलम के साथ; कोई छवि या विशेष डेटाटाइप

इस संदेश का वास्तव में क्या अर्थ है और मैं इससे कैसे बच सकता हूं?
क्या आप इस कर्सर विंडो को बदलकर प्रदर्शन में सुधार कर सकते हैं?

+2

इसे देखें: http://stackoverflow.com/questions/11863024/android-cursor-window-is-full –

+0

धन्यवाद लेकिन मैंने पहले ही यह प्रश्न देखा है और मैं एसडी कार्ड – Tirrel

+0

पर किसी भी अपडेट का उपयोग नहीं कर सकता यह वाला? मुझे स्ट्रिंग्स की सूची पर कुछ परिस्थितियों में एक ही समस्या हो रही है। –

उत्तर

14

मेरे अनुभव से इसका मतलब है कि क्वेरी परिणाम कर्सर की विंडो के लिए बहुत बड़े हैं और यह अधिक स्मृति का अनुरोध करता है। अधिकांश बार इस अनुरोध को सम्मानित किया जाता है, लेकिन कम अंत उपकरणों पर यह अपवाद फेंक सकता है।

मुझे प्रश्न में ऐप के विनिर्देशों को नहीं पता है लेकिन आपने एक सूची दृश्य को संदर्भित किया है। एक सूची दृश्य एक बार में 3700 पंक्तियां नहीं दिखा सकता है और endless list मांग पर डेटा लोड करने में मदद कर सकता है

मेरी सलाह क्वेरी को एक से अधिक प्रश्नों में तोड़ना है जो छोटे परिणाम लौटाती है और अगली क्वेरी चलाने से पहले उन्हें बंद कर देती है। प्रत्येक लगातार क्वेरी के परिणामों को गठबंधन करने के बाद।

+0

एक सूची दृश्य 10 000 से अधिक पंक्तियों (मेरे अपने अनुभव के आधार पर) के साथ एक कर्सर दिखा सकता है। थाई मुद्दा स्मृति के बारे में अनिश्चित है, पंक्ति गणना नहीं। – matreshkin

+0

@matreshkin सहमत हैं, यह एक सूची दृश्य का पूरा बिंदु है: स्क्रीन पर दिखाई देने वाली चीज़ों के आधार पर पंक्तियों को आलसी लोड और प्रस्तुत करने के लिए। –

+1

बीटीडब्लू, अब मैं देखता हूं कि @ डेलब्लैंको ने लिखा "ए लिस्ट व्यू एक बार में 3700 पंक्तियां नहीं दिखा सकता"। भ्रमित लगता है लेकिन वास्तव में एक खिड़की से जुड़े 3700 दृश्य असाधारण स्थिति लगता है :) – matreshkin

1

मुझे यह समस्या भी मिली। मेरे मामले में मैंने डेटाबेस में 2.2 एमबी छवि सहेजी। जब डेटाबेस Cursor.getBlob() का उपयोग करने से डेटा लोड हो रहा मैं लॉग में यह संदेश देखते हैं:

CursorWindow: Window is full: requested allocation 2202504 bytes, free space 2076560 bytes, window size 2097152 bytes 

अगर मैं लगातार पंक्तियों के लिए किसी भी डेटा (स्ट्रिंग, संख्या, आदि) प्राप्त करने का प्रयास करने के बाद मैं इस संदेश को मिलेगा यह किसी भी त्रुटि के बिना शून्य के रूप में वापस कर दिया गया है। समाधान 2.2 एमबी ब्लॉब को हटाना था। मुझे नहीं पता कि एंड्रॉइड में डेटाबेस से बड़े ब्लॉब्स लोड करना संभव है या नहीं।

संबंधित मुद्दे