关闭与 SqlBright 的数据库连接



我正在将以下访问Android应用程序的SQLite数据库的模式迁移到RxJava世界中:

public List<Stuff> doStuff(){
    synchronized (lock) {
        open(); // this effectively checks for isOpen() then calls getWritableDatabase()
        // query the database for stuff
        close(); // SQLiteOpenHelper close method
        return stuffList;
    }
}

我正在努力解决的是何时应该关闭数据库连接?我知道有一些模式可以完全不关闭连接以及关闭连接作为 Activity 方法的一部分。但是,这些模式需要我将逻辑应用于整个数据库管理器类,如果可能的话,我希望避免这种情况。希望也许有一种建议的方法来处理RxJava,特别是SqlBright包装器?我迁移的代码如下所示:

public Observable<List<Stuff>> doStuff(){
    synchronized (lock) {
        open();
        String sql = <..>;
        return db.createQuery(tableName, sql, args).mapToList(mStuffMapper);
        // where do I close()?
    }
}

理想情况下,我所追求的解决方案应该允许我更改这种方法,其余方法保持当前的打开/关闭模式。

可以使用订阅关闭连接。

db.createQuery(tableName, sql, args)
        .mapToList(mStuffMapper);
        .doOnSubscribe(new Action0() {
            @Override public void call() {
                close(); 
            }
        });
Subscription subscribe = doStuff().subscribe();
subscribe.unsubscribe();

相关内容

  • 没有找到相关文章

最新更新