Intereting Posts
Управление автоматической экспозицией камеры Firebase: при срабатывании события onDisconnect? Кордова Ошибка при использовании Cordova-Android 6.2.0 – getFileResources не является функцией Строка заголовка продолжает отображаться, даже с помощью requestWindowFeature или андроида: тема Android – создание папки в каталоге data / data / pkg / files Android включает макет динамически с помощью библиотеки привязки данных Gitignore misc.xml и * .iml с Android Studio 0.8.9 Java Temporary Iterators замедляет мою Android-игру Как использовать повторяющиеся идентификаторы в разных макетах? Material Design – панель инструментов AppCompat, не отображающая тень Как использовать PubNub в приложении для Android? Android Lollipop по умолчанию использует данные Mobile Data, когда Wi-Fi не имеет доступа в Интернет? Эффект андроидного увеличительного стекла Какую идентификацию пользователя следует использовать для сопоставления покупок в приложении в Google Play? «Проекты библиотеки 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);