私には同期の確かな背景がありません。同期方式を使用すると、この問題は修正されると思います。しかし、誰かが私がこの問題を修正するのを手伝ってくれるでしょうか?コードは以下のとおりです。
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)