L'utilisation même SQLite pour trois activités

Dimitris:

J'utilise trois activités qui sont ouvertes en même temps. Toutes les activités sont données retreive de SQLite. Je ne ferme pas ou re ouvert ma connexion quand je vais de l'activité a-> b ou de b-> c. Je viens de disposer ma db lorsque l'activité est en train de détruire.

activité A

SqliteConnection db;

OnCreate method
db = new SqliteConnection(mypath);

OnDestroy
db.Dispose();
db=null;

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

Même code est en cours d'exécution quand je vais de l'activité b-> c. A l'intérieur de la même activité que j'utilise beaucoup sqlite fois.

Est-ce une bonne pratique? Dois-je disposer ma connexion immediatelly après une utilisation? Ou dois-je fermer ma connexion sur pause et rouvrir le curriculum vitae? Ou puis-je passer la même connexion ouverte à l'activité suivante? Quelle est la meilleure approche?

question modifieded

class databaseHelper
{
      private static SqliteConnection db;

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

           return db;

   }

}

Et à l'intérieur de mon activité sur la création

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

Je n `rouleau avec Java ni Xamarin. Voici un code Kotlin, il est assez explicite.

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
    }

   }
}

Il suffit de créer une classe publique et nommez-le par exemple « DatabaseHelper ». A l'intérieur de la classe, créer une variable statique de votre type de base de données. Créer une fonction publique qui renvoie la variable statique. A l'intérieur de la fonction, tout d'abord, vérifiez si l'instance statique est nulle et si elle est nulle, puis l'initialiser avec votre instance de base de données. De cette façon, lorsque vous devez utiliser votre instance de base de données, juste, accéder à la fonction statique, de lui fournir le contexte et il vous renvoie l'instance de base de données initialisées.

en Kotlin

DatabaseHelper.getDbInstance(this).yourDbFunction()

MISE À JOUR

Depuis cette réponse a décollé, je voudrais proposer des améliorations à ma solution précédente. Au lieu de passer un contexte d'activité pour initialiser la base de données, utiliser le contexte de l' application. Si vous donnez un contexte d'activité à l'instance de base de données statique, une fuite de mémoire se produit car l'instance de base de données contient une forte référence à l'activité et l'activité sera pas admissible à la collecte des ordures.

L'utilisation correcte:

val myDb = MyDb(applicationContext)

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=119549&siteId=1
conseillé
Classement