मेरे पास सिंक्रनाइज़ेशन की कोई ठोस पृष्ठभूमि नहीं है। मुझे लगता है कि जब मैं सिंक्रनाइज़ विधि का उपयोग करता हूं तो यह समस्या ठीक हो जाएगी। लेकिन क्या कोई इस मुद्दे को ठीक करने में मेरी मदद कर सकता है? कोड के नीचे है:एंड्रॉइड SQLite बंद अपवाद
public HashMap<String, FriendInfo> getAllRecordsInList_HashMap() {
MySQLiteHelper dbHelper = MySQLiteHelper.getInstance(mActivity);
HashMap<String, FriendInfo> list_map = new HashMap<String, FriendInfo>();
SQLiteDatabase db = dbHelper.getReadableDatabase();
// Cursor cursor = db.rawQuery("SELECT * from " +
// dbHelper.tbl_friendlist, new String[] {});
String[] cols = { dbHelper.id, dbHelper.name, dbHelper.picture, dbHelper.birthday, dbHelper.livein, dbHelper.gender, dbHelper.is_online, dbHelper.is_vip };
Cursor cursor = db.query(dbHelper.tbl_friendlist, cols, null, null, null, null, dbHelper.name);
if (cursor != null && cursor.getCount() > 0) {
// some code here....
}
cursor.close();
return list_map;
}
अलग धागे इस विधि getAllRecordsInList_HashMap()
कॉल कर सकते हैं। यदि मैं सिंक्रनाइज़ विधि बना देता हूं तो कृपया इस समस्या को ठीक करने का सुझाव दें। क्या यह तय किया जाएगा?
java.lang.IllegalStateException: Cannot perform this operation
because the connection pool has been closed.
at android.database.sqlite.SQLiteConnectionPool.throwIfClosedLocked(SQLiteConnectionPool.java:962)
at android.database.sqlite.SQLiteConnectionPool.waitForConnection(SQLiteConnectionPool.java:599)
at android.database.sqlite.SQLiteConnectionPool.acquireConnection(SQLiteConnectionPool.java:348)
at android.database.sqlite.SQLiteSession.acquireConnection(SQLiteSession.java:894)
at android.database.sqlite.SQLiteSession.executeForCursorWindow(SQLiteSession.java:834)
at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:62)
at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:143)
at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:133)
at com.platinumapps.friendlist.BLL_Friendlist.getAllRecordsInList_HashMap(BLL_Friendlist.java:290)
at com.platinumapps.activities.Messages_Activity.addViewTOLayout(Messages_Activity.java:753)
at com.platinumapps.activities.Messages_Activity.access$3(Messages_Activity.java:744)
at com.platinumapps.activities.Messages_Activity$1$3.run(Messages_Activity.java:141)
at ndroid.app.Activity.runOnUiThread(Activity.java:4644)
at com.platinumapps.activities.Messages_Activity$1.onReceive(Messages_Activity.java:136)
at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:758)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5039)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
क्या होगा यदि मैं सामग्री प्रदाता का हिस्सा नहीं हूं? – zundi
यदि आप ContentProvider का उपयोग नहीं कर रहे हैं, तो सिंगलटन पैटर्न SqlHandlerClass का उपयोग करके बेहतर है जिसमें एक समय में केवल एक ही इंस्टेंस हो सकता है। – Nepster