Hola.
Es mas que nada una duda teórica que me ha surgido a la hora de programar. No consigo tener muy claro estos dos tipos de objetos. Os pongo en situación.
Mi intención es que al ejecutar el MainActivity se compruebe si la base de datos ha sido creada. En caso negativo se crea en segundo plano (lanzamos un ProgressDialog ). Aqui es donde me he dado cuenta que no tengo claro el concepto de Context.
Código de MainActivity en el onCreate
LoadDbAsync task = new LoadDbAsync(this);
task.execute();
Y código resumido de onPreExecute() en LoadDbAsync.java. mActivity es un objeto de tipo Activity
pDialog = new ProgressDialog(mActivity);
pDialog.setMessage("Cargando Base de datos...");
pDialog.setCancelable(false);
pDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
El constructor de LoadDbAsync
//constructor
public LoadDbAsync(Activity activity) {
mActivity = activity;
}
Este código funciona sin ningún problema.
Pero en cambio el siguiente código no. MainActivity
LoadDbAsync task = new LoadDbAsync(getApplicationContext());
task.execute();
onPreExecute() en LoadDbAsync.java
pDialog = new ProgressDialog(context);
pDialog.setMessage("Cargando Base de datos...");
pDialog.setCancelable(false);
pDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
El constructor de LoadDbAsync
public LoadDbAsync(Context context) { // TODO Auto-generated
constructor stub this.context = context; }
Me gustaría entender el por qué un código funciona y el otro no.
Saludos.