title: Correct use of Sqlite on Android (SQLiteOpenHelper, connections, main thread, etc...)
body: <p>I'm searching info about SQLite on Android, and read some chapters of some books on Android Programming, but I don't know how to really use SQLite on Android correctly.</p>
  
  <p>I'm developing an app that has Activities, Services and BroadcastReceivers, and all of them must read and write data in the database. So I have some questions:</p>
  
  <ul>
  <li>Where is the best place to create the <code>SQLiteOpenHelper</code> instance? I read about this, and it seems that the best way is to have only <code>SQLiteOpenHelper</code> for all the app.</li>
  <li>When, and where, do I need to get <code>SQLiteDatabase</code> object by calling <code>dbHelper.getReadableDatabase()</code> (or <code>getWritableDatabase</code>)? I need to do it on each query, closing it after each query? </li>
  <li>I read that I should never do database operations in the main thread, so I'm creating an Async task for each database operation I do in an Activity, is this the best way?</li>
  </ul>