Я мигрирующие следующую картину доступа к базе данных SQLite в Android приложения в RxJava мире:закрытия с SqlBright
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()?
}
}
Решение Я после того, как, в идеале, должен позволить мне изменить это один метод, сохраняя остальное с текущим открытием/закрытием шаблона.