Non sono sicuro che tu stia utilizzando SQLiteOpenHelper
correttamente... non hai bisogno di quel myDataBase
campo, l'idea è che gestisca la tua connessione al database per te. Non sottoclassare in quel modo... a meno che tu non stia facendo cose in onCreate()
ecc che non sono pubblicati qui sembra che tu possa semplicemente usare SQLiteOpenHelper
direttamente, ovvero:
SQLiteOpenHelper sqlite = new SQLiteOpenHelper(ctx, DB_PATH+DB_NAME, null,
DB_VERSION_NUMBER);
Supponendo che la fine dell'attività debba interrompere anche l'attività in background, ti consiglio di chiamare AsyncTask.cancel(true)
dal tuo Activity.onPause()
. Assicurati che il database sia stato ripulito da onCancelled().
E se la tua attività in background è l'unica cosa che legge il database, rendilo proprietario dell'istanza SQLiteOpenHelper. È facile avere problemi con i dati statici, quindi è meglio evitare IMHO. Farei qualcosa del genere:
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
}
}