Intereting Posts
Изменение размеров макетов программным способом (как анимация) Bitmap.compress возвращает false для рисунка Как Xamarin для Android (Mono для Android) отличается от разработки на базе Android? Загрузите аккумулятор только один раз, используя Android SDK Android: возврат поискового запроса к текущей активности Android включает макет динамически с помощью библиотеки привязки данных Кнопки Eclipse, такие как «Ввод, выключение, возобновление и т. Д.», Не работает Зачем расширять класс приложения? Parse.com – настраиваемый звук уведомления Android Автоматически форматировать номер телефона в EditText Интеграция внешней чистой библиотеки Java и наличие на ней классов Android Как я могу adb установить apk на несколько подключенных устройств? Это как планировать java-метод для запуска через 1 секунду? Установка приложения Android Market на эмуляторе Динамическое изменение цвета изображения SVG в Android

Как работает SQLiteOpenHelper Context

У меня есть приложение с двумя действиями.

Один из них перечисляет несколько значений, а другой добавляет новые значения в БД.

У меня есть класс, который распространяется от SQLiteOpenHelper и управляет соединениями БД, запросами и т. Д.

Теперь я понимаю, что в конструкторе SQLiteOpenHelper вам необходимо передать контекст, который используется для определения того, нужно ли ему создавать новую БД или открывать существующую.

Но если у меня есть один экземпляр класса SQLiteOpenHelper в каждом действии, тогда контекст будет другим.

Есть ли способ избежать этого?

Благодарю.

Solutions Collecting From Web of "Как работает SQLiteOpenHelper Context"

Передайте в контексте приложения (.getApplication ()) вместо Activity. Таким образом, оба экземпляра будут обращаться к db, используя тот же контекст.

Context может быть другим, но не создавать разные БД. Конструктор SQLiteOpenHelper имеет параметр name , это имя файла DB. Если это существует, это не создаст независимо от того, прошел ли Context .

Фактически, созданная база данных связана с пакетом приложений контекста . Поэтому неважно, прошел ли вы контекст приложения или контекст активности.

Context.java

 /** * Open a new private SQLiteDatabase associated with this Context's * application package. Create the database file if it doesn't exist. ... ... */ public abstract SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory);