2012-06-21 3 views
7

Я расширяю класс SQLiteOpenHelper. Мой конструкторЧто делает класс SQLiteOpenHelper с параметром контекста?

public MyDatabaseHelper(Context context) { 
    super(
     context,   // ??? 
     "MyDatabase.db", // Database name 
     null,   // Cursor factory 
     1    // database version 
    ); 
} 

Что делает конструктор SQLiteOpenHelper с контекстной информацией?

Для моего приложения конструктор будет вести себя одинаково независимо от состояния программы (контекста). Могу ли я передать null для контекста без каких-либо будущих проблем?

ответ

6

Если вы указали нулевое значение, оно создаст базу данных в памяти вместо этого, но вам нужно будет указать значение null для параметра имени базы данных, чтобы оно обрабатывалось надлежащим образом.

Это описано в документации конструктора для контекста

контекст использовать, чтобы открыть или создать имя базы данных в файла базы данных, или нуль для в памяти базы данных

Также , если вы просмотрите исходный код самого класса SQLiteHelper, вы увидите, что он использует значение mName, чтобы решить, использовать ли mContext. Просмотр исходного кода на сайте здесь:

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.4_r1.2/android/database/sqlite/SQLiteOpenHelper.java#SQLiteOpenHelper.0mContext

+1

Спасибо! Теперь это имеет больше смысла. Я никогда не слышал о grepcode, и я думаю, что этот сайт и я стану хорошо знакомым! – chessofnerd

+0

вопрос rookie: не имя базы данных уже используется для второго параметра? Что будет дальше для контекста? – AlleyOOP

+0

Контекстом может быть сама деятельность или приложение. –

Смежные вопросы