Saya tidak yakin Anda menggunakan SQLiteOpenHelper
benar... Anda tidak memerlukan myDataBase
itu bidang, idenya adalah bahwa ia mengelola koneksi database Anda untuk Anda. Jangan subkelas dengan cara itu... kecuali jika Anda melakukan sesuatu di onCreate()
dll yang tidak diposting di sini sepertinya Anda bisa menggunakan SQLiteOpenHelper
langsung, yaitu:
SQLiteOpenHelper sqlite = new SQLiteOpenHelper(ctx, DB_PATH+DB_NAME, null,
DB_VERSION_NUMBER);
Dengan asumsi bahwa mengakhiri aktivitas juga akan menghentikan tugas latar belakang Anda, sebaiknya panggil AsyncTask.cancel(true)
dari Activity.onPause()
. Anda . Pastikan database dibersihkan dari onCancelled().
Dan jika tugas latar belakang Anda adalah satu-satunya hal yang membaca database, maka buatlah itu memiliki instance SQLiteOpenHelper. Sangat mudah untuk mendapat masalah dengan data statis, jadi sebaiknya hindari IMHO. Saya akan melakukan sesuatu seperti ini:
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
}
}