Изменить базу данных в SQLiteOpenHelper

#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

    }
  

Это потокобезопасно и может использоваться везде, где вам нужно.