SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

Koneksi SQLite bocor meskipun semuanya ditutup

Font yang dicetak tebal dalam kutipan sesuai dengan bagian ini dalam kode Anda:

private DatabaseManager open() throws SQLException {
    dbHelper = new DatabaseHelper(context);
    db = dbHelper.getWritableDatabase();

dari:http://www.androiddesignpatterns.com/2012/05/correctly-managing-your-sqlite-database.html

Pendekatan #1:Gunakan Pabrik Abstrak untuk Membuat Instansi SQLiteOpenHelper

Deklarasikan pembantu database Anda sebagai variabel instan statis dan gunakan pola Pabrik Abstrak untuk menjamin properti tunggal. Contoh kode di bawah ini akan memberi Anda ide bagus tentang cara mendesain kelas DatabaseHelper dengan benar.

Metode getInstance pabrik statis memastikan bahwa hanya oneDatabaseHelper yang akan pernah ada pada waktu tertentu. Jika mInstanceobject belum diinisialisasi, satu akan dibuat. Jika satu telah dibuat maka itu hanya akan dikembalikan.

Anda tidak boleh menginisialisasi objek pembantu Anda menggunakan new DatabaseHelper(context) .
Sebagai gantinya, selalu gunakanDatabaseHelper.getInstance(context) , karena ini menjamin bahwa hanya satu pembantu database yang akan ada di seluruh siklus hidup aplikasi.

public static class DatabaseHelper extends SQLiteOpenHelper { 

  private static DatabaseHelper mInstance = null;

  private static final String DATABASE_NAME = "database_name";
  private static final String DATABASE_TABLE = "table_name";
  private static final int DATABASE_VERSION = 1;

  public static DatabaseHelper getInstance(Context ctx) {

    // Use the application context, which will ensure that you 
    // don't accidentally leak an Activity's context.
    // See this article for more information: http://bit.ly/6LRzfx
    if (mInstance == null) {
      mInstance = new DatabaseHelper(ctx.getApplicationContext());
    }
    return mInstance;
  }

  /**
   * Constructor should be private to prevent direct instantiation.
   * make call to static factory method "getInstance()" instead.
   */
  private DatabaseHelper(Context ctx) {
    super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
  }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengkloning Database SQLite

  2. Menyimpan konfigurasi di android

  3. Tambahkan Hari ke Tanggal di SQLite

  4. SQLite PRIMARY key AutoIncrement tidak berfungsi

  5. SELECT DISTINCT Tidak berfungsi Android SQLite