Não tenho certeza se você está usando
SQLiteOpenHelper
corretamente... você não precisa desse myDataBase
campo, a ideia é que ele gerencie sua conexão com o banco de dados para você. Não subclassifique dessa maneira... a menos que você esteja fazendo coisas em onCreate()
etc que não são postados aqui, parece que você pode usar apenas SQLiteOpenHelper
diretamente, ou seja:SQLiteOpenHelper sqlite = new SQLiteOpenHelper(ctx, DB_PATH+DB_NAME, null,
DB_VERSION_NUMBER);
Supondo que encerrar a atividade também deva interromper sua tarefa em segundo plano, recomendo chamar
AsyncTask.cancel(true)
do seu Activity.onPause()
. Certifique-se de que o banco de dados seja limpo de onCancelled(). E se sua tarefa em segundo plano for a única coisa que lê o banco de dados, torne-a proprietária da instância SQLiteOpenHelper. É fácil ter problemas com dados estáticos, por isso é melhor evitar IMHO. Eu faria algo assim:
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
}
}