#android #sqlite #sqliteopenhelper
#Android #sqlite #sqliteopenhelper
Вопрос:
Есть ли способ изменить, какую базу данных использует объект SQLiteOpenHelper, без необходимости заставлять каждый класс, использующий помощника, заменять свой экземпляр класса?
Причина, по которой я меняю базу данных, заключается в том, что у меня есть некоторые текущие данные и некоторые автономные данные в двух отдельных базах данных с идентичными структурами таблиц. Я обновляю автономные данные, а затем меняю их местами, что позволяет мне блокировать автономную базу данных при больших вставках.
Ответ №1:
Вы должны использовать шаблон singleton для доступа к вашей базе данных только с одним экземпляром, который выглядит так
public class SingletonDemo {
private static SingletonDemo instance = null;
private SingletonDemo() { // do what you want here}
public static SingletonDemo getInstance() {
if (instance == null) {
synchronized (SingletonDemo.class) {
if (instance == null) {
instance = new SingletonDemo();
}
}
}
return instance;
}
...
// Add all the class function you need here
}
Это потокобезопасно и может использоваться везде, где вам нужно.