El uso de SQLite misma durante tres actividades

Dimitris:

Estoy usando tres actividades que se abren al mismo tiempo. Todas las actividades son los datos retreive de SQLite. Yo no se cierra o se abre la conexión cuando me voy de la actividad a-> b o desde b-> c. Yo sólo dispongo de mi db cuando la actividad está destruyendo.

Una actividad

SqliteConnection db;

OnCreate method
db = new SqliteConnection(mypath);

OnDestroy
db.Dispose();
db=null;

Onbuttonclick
startActivity(new Intent(this, ActivityB));

Mismo código se ejecuta cuando me voy de la actividad b-> c. Dentro de la misma actividad que utilizo un montón de veces SQLite.

¿Es esta una buena practica? Debo desechar mi conexión immediatelly después de un uso? O debo cerrar mi conexión en pausa y volver a abrir en la hoja de vida? O puedo pasar la misma conexión abierta a la siguiente actividad? ¿Cuál es el mejor enfoque?

pregunta modifieded

class databaseHelper
{
      private static SqliteConnection db;

      public static SqliteConnection openDatabase(Context context)
   {
         if(db==null)
             db = new SqliteConnection(mypath);

           return db;

   }

}

Y dentro de mi actividad en crear

  databaseHelper.openDatabase(this).myquery....
Taseer:

Pongo el `t rollo con Java ni Xamarin. Aquí es un código Kotlin, es bastante auto-explicativo.

class DatabaseHelper {    //Public class

companion object {   ///This is equiavalent to java static.

    private var instance: YourDatabase? = null


    fun getDbInstance(context: Context): YourDatabase?  //This functions returns the initialized DB instance.
    {
        if(instance == null)
            instance = YourDatabase(context)   // initializing the DB only one time

        return instance
    }

   }
}

Basta con crear una clase pública y el nombre, por ejemplo "DatabaseHelper". Dentro de la clase, cree una variable estática de su tipo de base de datos. Crear una función pública que devuelve la variable estática. Dentro de la función, en primer lugar, comprobar si la instancia estática es nulo y si es nulo, inicializarlo con la instancia de base de datos. De esta manera, cuando se necesita para utilizar la instancia de base de datos, simplemente, el acceso a la función estática, lo dote de contexto y se le devolverá la instancia de base de datos inicializado.

en Kotlin

DatabaseHelper.getDbInstance(this).yourDbFunction()

ACTUALIZAR

Dado que esta respuesta se quitó, me gustaría sugerir mejoras a mi solución anterior. En lugar de pasar un contexto de actividad para inicializar la base de datos, utilice contexto de aplicación. Si se da un contexto de actividad a la instancia de base de datos estática, una pérdida de memoria se producen debido a la instancia de base de datos tiene una fuerte referencia a la actividad y la actividad se NO ser elegible para la recolección de basura.

El uso apropiado:

val myDb = MyDb(applicationContext)

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=119541&siteId=1
Recomendado
Clasificación