पर एक संदर्भ प्राप्त करने का प्रयास मैंने मई में [एंड्रॉइड डेवलपर्स] Google समूह पर this पोस्ट किया। मैंने कभी वापस नहीं सुना और समस्या का पुन: उत्पन्न करने में सक्षम नहीं था जब तक कि मेरे छात्रों में से एक ने पिछले हफ्ते नहीं किया। मैंने सोचा कि मैं इसे यहां पोस्ट करूंगा और देख सकता हूं कि यह किसी के लिए घंटी बज रहा है या नहीं।अपवाद: एक करीबी SQLiteClosable
static Cursor getAll(SQLiteDatabase db, String orderBy) {
return(db.rawQuery("SELECT * FROM restaurants "+orderBy, null));
}
जब मैंने इसे चलाने के लिए, कई मायनों में, मैं इस मिल:
05-01 14:45:05.849: ERROR/AndroidRuntime(1145):
java.lang.IllegalStateException: attempt to acquire a reference on a
close SQLiteClosable
05-01 14:45:05.849: ERROR/AndroidRuntime(1145): at
android.database.sqlite.SQLiteClosable.acquireReference(SQLiteClosable.java:31)
05-01 14:45:05.849: ERROR/AndroidRuntime(1145): at
android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:56)
05-01 14:45:05.849: ERROR/AndroidRuntime(1145): at
android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:49)
05-01 14:45:05.849: ERROR/AndroidRuntime(1145): at
android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:49)
05-01 14:45:05.849: ERROR/AndroidRuntime(1145): at
android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1118)
05-01 14:45:05.849: ERROR/AndroidRuntime(1145): at
android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1092)
05-01 14:45:05.849: ERROR/AndroidRuntime(1145): at
apt.tutorial.Restaurant.getAll(Restaurant.java:14)
यह मेरे लिए कोई मतलब नहीं है
मेरी कोड नमूने में से एक में, मैं निम्नलिखित तरीके होते है। डेटाबेस निश्चित रूप से खुला है। SQLiteClosable
SQLiteQuery
SQLiteQueryDriver
द्वारा बनाई गई है, और मैं कोई सबूत नहीं है एक वस्तु पूल या कुछ और यहाँ चल रहा है कि कैसे एक 'नई' SQLiteClosable
पहले से ही बंद कर दिया है समझा सकती है कि है कि वहाँ देख । तथ्य यह है कि यह स्पोरैडिक है (जिसका मतलब है कि यूआई ऑपरेशंस कभी-कभी अपवाद को ट्रिगर करता है, लेकिन हमेशा नहीं) कुछ प्रकार के पूल, रेस हालत, या कुछ ... का सुझाव देता है लेकिन मुझे यकीन नहीं है कि कहां है।
विचार?
धन्यवाद!
अद्यतन: प्रश्न में कोड मेरी Android Programming Tutorials किताब से बाहर LunchList ट्यूटोरियल से है। यह थोड़ा सा फैल गया है और सीधे एसओ में पोस्ट करने के लिए बहुत उपयुक्त नहीं है। यदि आप इसे देखना चाहते हैं तो आप उपरोक्त लिंक से उस पुस्तक के लिए कोड डाउनलोड कर सकते हैं। मुझे याद नहीं है कि उस समय ट्यूटोरियल का कौन सा संस्करण काम कर रहा था, हालांकि यह ट्यूटोरियल 12-ट्यूटोरियल 16 रेंज में था। मैं ज्यादातर किसी ऐसे व्यक्ति को चलाने की उम्मीद कर रहा था जिसने इस समस्या से पहले यात्रा की थी और संभावित अपराधी था। मैं काफी हद तक निश्चित हूं कि मेरा डेटाबेस खुला है। एक बार फिर धन्यवाद!
क्या आपने इस पर कोई प्रगति की है? –
अद्यतन देखें जो मैंने अभी मूल क्वेरी में जोड़ा है। यह इतनी दुर्लभ घटना है कि मैं बहुत चिंतित नहीं हूं; मैं बस किसी ऐसे व्यक्ति की उम्मीद कर रहा था जिसने समस्या को देखने से पहले समस्या थी। धन्यवाद! – CommonsWare
हां, यह मेरे लिए भी बहुत ही कम होता है। फिर भी मैं कम से कम इसके लिए एक बग रिपोर्ट खोजने की उम्मीद करता, लेकिन मैंने नहीं किया। –