title: Android SQLite closed exception
body: <p>I have no solid background of synchronization. I think this issue will be fixed when I use <em>synchronized</em> method. But can anyone help me to fix this issue? Code is below:</p>
  
  <pre><code>public HashMap&lt;String, FriendInfo&gt; getAllRecordsInList_HashMap() {
  
          MySQLiteHelper dbHelper = MySQLiteHelper.getInstance(mActivity);
          HashMap&lt;String, FriendInfo&gt; list_map = new HashMap&lt;String, FriendInfo&gt;();
  
          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 &amp;&amp; cursor.getCount() &gt; 0) {
  
              // some code here....
          }
          cursor.close();
          return list_map;
      }
  </code></pre>
  
  <p>Different threads can call this method <code>getAllRecordsInList_HashMap()</code>. Please advise how to fix this issue if I make synchronized method. Will it be fixed?</p>
  
  <pre><code>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)
  </code></pre>