2012-06-21 15 views
7

Estoy extendiendo la clase SQLiteOpenHelper. Mi constructor es¿Qué hace la clase SQLiteOpenHelper con el parámetro de contexto?

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

¿Qué hace el constructor SQLiteOpenHelper con la información de contexto?

Para mi aplicación, el constructor se comportará igual independientemente del estado del programa (contexto). ¿Puedo pasar el nulo por el contexto sin problemas futuros?

Respuesta

6

Si proporciona un valor nulo, creará en su lugar una base de datos en memoria, pero también deberá proporcionar nulo para el parámetro de nombre de la base de datos para que se maneje correctamente.

Esto está documentado en la documentación constructor de contexto

contexto utilizar para abrir o crear el nombre de la base de datos del archivo de base de datos o nulo para una base de datos en memoria

también Si ve el código fuente de la clase SQLiteHelper, verá que usa el valor mName para decidir si usar mContext. Ver el código fuente en línea aquí:

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

Gracias! Esto tiene más sentido ahora. ¡Nunca había escuchado sobre grepcode y creo que ese sitio y yo nos conoceremos! – chessofnerd

+0

pregunta de novato: ¿ya no se está utilizando el nombre de la base de datos para el segundo parámetro? ¿Qué entraría entonces en el contexto? – AlleyOOP

+0

El contexto puede ser la actividad o la aplicación en sí. –

Cuestiones relacionadas