No estoy seguro de estar usando SQLiteOpenHelper
correctamente... no necesitas eso myDataBase
field, la idea es que administre la conexión de su base de datos por usted. No haga subclases de esa manera... a menos que esté haciendo cosas en onCreate()
etc. que no se publican aquí, parece que solo puede usar SQLiteOpenHelper
directamente, es decir:
SQLiteOpenHelper sqlite = new SQLiteOpenHelper(ctx, DB_PATH+DB_NAME, null,
DB_VERSION_NUMBER);
Suponiendo que finalizar la actividad también debería detener su tarea en segundo plano, recomendaría llamar a AsyncTask.cancel(true)
desde tu Activity.onPause()
. Asegúrese de que la base de datos esté limpia desde onCancelled().
Y si su tarea en segundo plano es lo único que lee la base de datos, conviértala en la instancia de SQLiteOpenHelper. Es fácil meterse en problemas con los datos estáticos, por lo que es mejor evitarlo en mi humilde opinión. Yo haría algo como esto:
protected class BackTask extends AsyncTask<String, Integer, String>
{
private SQLiteOpenHelper sqlite;
public void BackTask(Context ctx) {
sqlite = new SQLiteOpenHelper(ctx, DB_PATH+DB_NAME, null,
DB_VERSION_NUMBER);
}
@Override
protected String doInBackground(String... params)
{
try {
//get requeste data from the database
//access the web service
return result;
} catch (Exception e) {
}
return null;
}
@Override
protected void onCancelled() {
sqlite.close();
}
@Override
protected void onPostExecute(String result)
sqlite.close();
// Update UI here
}
}