前書きSQLiteDatabaseの処理は、SQLiteOpenHelperからDBをもらって、selectならカーソル開いて、更新ならトランザクションかけて…と、大体決まりきったものが多いです。 ちょっとしたことなら別にいいんですが、SQLiteをフル活用しようとしてDAOを作ってるとこの辺の処理を書くのが段々面倒くさくなってきます。クロージャを使ったUtilityメソッドを作ってしまいましょう。 UIスレッド以外でのDB処理話はズレますが、UIスレッド以外からDBを操作する場合はSQLiteDatabaseが継承しているSQLiteClosableのacquireReferenceメソッドを呼んでおくと安全です。 SQLiteOpenHelperから貰えるDBはすべて同一インスタンスです。仮に「UIスレッドでヘルパーを作る→バックグラウンドでそのヘルパーを使うスレッドを作る→バックグラ