2012-06-21 10 views
7

Rozszerzam klasę SQLiteOpenHelper. Mój konstruktor jestCo robi klasa SQLiteOpenHelper z parametrem kontekstu?

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

Co konstruktor SQLiteOpenHelper zrobić z informacji kontekstu?

Dla mojej aplikacji konstruktor zachowuje się tak samo niezależnie od stanu programu (kontekst). Czy mogę przekazać wartość null dla kontekstu bez żadnych przyszłych problemów?

Odpowiedz

6

Jeśli podasz wartość pustą, utworzy ona bazę danych w pamięci, ale musisz podać wartość pustą dla parametru nazwy bazy danych, aby była poprawnie obsługiwana.

Jest to udokumentowane w dokumentacji konstruktora dla kontekście

kontekst użyć, aby otworzyć lub utworzyć nazwę bazy danych pliku bazy danych lub null do bazy

Także w pamięci , jeśli przeglądasz kod źródłowy samej klasy SQLiteHelper, zobaczysz, że używa ona wartości mName, aby zdecydować, czy użyć mContext. Zobacz kod źródłowy on-line tutaj:

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

Dziękujemy! Teraz ma to więcej sensu. Nigdy nie słyszałem o grepcode i myślę, że ta strona i ja się dobrze poznamy! – chessofnerd

+0

Pytanie typu rookie: czy nazwa bazy danych nie jest już używana dla drugiego parametru? Co by się wtedy pojawiło w kontekście? – AlleyOOP

+0

Kontekstem może być działanie lub sama aplikacja. –