活动和后台服务访问SQLite数据库

Num*_*ife 5 sqlite android android-service android-activity android-sqlite

我想检查SQLite数据库是否已打开,如果是,我想在服务类中访问该数据库.

我担心,并且已经看到,对数据库的多次打开调用发生冲突,并抛出异常.因为我做我的两个活动和服务类中查询数据库,我试图实现Commonsware在这里推荐的解决方案:当收于Android数据库连接?每次操作完成后或应用程序退出后.但是,如果Activity可能需要,我不想关闭然后在Service类中打开数据库.从这个答案为什么使用SQLiteOpenHelper而不是SQLiteDatabase?,看起来实现一个SQLiteOpenHelper来解决多次调用的问题是有意义的.

非常感谢您的帮助!!

Num*_*ife 5

这个人凯文是一个传奇:http://touchlabblog.tumblr.com/post/24474750219/single-sqlite-connection.非常感谢.

在那个链接上,他分享了他荒谬简单的解决方案:

public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static DatabaseHelper instance;

    public static synchronized DatabaseHelper getHelper(Context context)
    {
        if (instance == null)
            instance = new DatabaseHelper(context);

        return instance;
    }
    //Other stuff... 
} 
Run Code Online (Sandbox Code Playgroud)

然后在我的SQLite类中,我将代码更改为如下所示:

public BlacklistWordDataSource(Context context) {
    dbHelper = MySQLiteHelper.getHelper(context);
}
Run Code Online (Sandbox Code Playgroud)

  • 它只是一个单例代码,为什么如此着迷呢? (8认同)
  • 一个真正的传奇并不担心他(或她)的批评者.无论如何,传说仍在继续:http://kpgalligan.tumblr.com/post/109546839958/single-database-connection.它只是关于该主题的链接集合.它不断上升. (3认同)