Android: Zugriff auf einzelne Datenbank aus mehreren Aktivitäten in der Anwendung?

Ich habe eine todo List Typ Anwendung, die alle Notizdaten in einer sqlite3 Datenbank speichert. Jede Aktivität in der Anwendung benötigt Zugriff auf die Datenbank, um verschiedene Teile der Daten in Echtzeit zu bearbeiten.

Derzeit habe ich jede Aktivität ein eigenes DBManager-Objekt (die Helper-Klasse, die ich erstellt habe, um die Datenbank zu verwalten). Dies verursacht Probleme aber und ich möchte eine etwas mehr globale Access-Lösung, so dass ich nicht zu öffnen / schließen / Erstellen einer Datenbank zu halten.

  • Cordova: Kann nicht installieren apk nach dem Upgrade von Android auf 5.1.1 Nexus 5
  • Multicast-Unterstützung auf Android im Hotspot / Tethering-Modus
  • Android-Soft-Tastatur funktioniert nicht
  • Setzen Sie und erhalten Sie String-Array aus gemeinsamen Einstellungen
  • Wie kann ich eine benutzerdefinierte Schriftart im Eingabebereich einer Eingabemethode verwenden?
  • Überprüfen Sie, ob die Aktivität für das Ergebnis aufgerufen wurde
  • Ich erwäge mehrere Optionen und möchte gerne Vor-und Nachteile von jedem sowie andere Vorschläge zu hören.

    1. Singleton-Stil. Habe eine Wrapper-Klasse, die einen Verweis auf den einzigen Datenbank-Manager zurückgibt, so dass jede Aktivität, die es braucht, es verwenden kann.

    2. Statischer Manager Habe die Manager-Klasse ganz statische Mitglieder und habe sie die Datenbank auf Load öffnen. Leicht zugänglich von jedem, der es braucht (was jeder ist).

    3. Fusion zwischen 1 und 2. Ich könnte eine Datenbank-Manager-Klasse, die initialisiert die Mitglied Singleton Instanz der Datenbank und alle Datenmanipulation Methoden waren statisch. Dann brauche ich nicht einmal einen Verweis auf das Singleton, um auf die Datenbank zuzugreifen. Ich mag diese Lösung am besten, bitte zeige nach unten.

    Vorschläge?

  • Kann ein Android App direkt mit einer Online-MySQL-Datenbank verbinden
  • Warum kommt Android NoSuchMethodException bei AlertDialog.Builder's setOnDismissListener auf
  • Programmieren Sie TextView mit Ellipse programmgesteuert
  • GCM 'Fehler: Nicht registriert'
  • Android (Java) Einfache Senden und Empfangen mit Server - Fast Setup Challenge
  • ListView nicht in NestedScrollView erweitern
  • 3 Solutions collect form web for “Android: Zugriff auf einzelne Datenbank aus mehreren Aktivitäten in der Anwendung?”

    Meiner Meinung nach ist der Content Provider kompliziert und wenn Sie nicht mit Aktivitäten teilen, die nicht Ihre eigenen sind, brauchen Sie es nicht. Deshalb schlage ich vor, dass du zuerst eine Singleton-Klasse nimmst. Dann, wenn Sie mehr Zeit haben oder es brauchen, gehen Sie für den Content Provider.

    Ich habe ein Singleton erfolgreich für 6 Monate ohne große Schwierigkeiten verwendet. (Ich war vorsichtig, dass es wirklich ein Singleton aber nur eine Instanz, die die Daten einmal lädt)

    Singleton

    • Vorteil: Einfach zu implementieren
    • Vorteil: weil ich eine gemeinsame Instanz verwendet habe, konnte ich das Caching einfach implementieren und damit die Applikation nicht so oft an die Datenbank machen
    • Nachteil: kann Ihre Daten nicht mit externen Aktivitäten teilen

    Inhalt Anbieter

    • Vorteil: Sie können Ihre Daten mit externen Aktivitäten teilen
    • Vorteil: Sie können sich mit der Such-API integrieren
    • Nachteil: Kompliziert, müssen Sie Ihre Daten auf eine andere Weise darstellen
    • Nachteil: Noch ein weiteres Android-API, um Zeit zu lernen

    Das verursacht aber Probleme

    Was sind … was?

    Und ich möchte eine etwas mehr globale Access-Lösung, so dass ich nicht zu öffnen / schließen / Erstellen einer Datenbank zu halten.

    Das Öffnen und Schließen einer SQLite-Datenbank ist billig. Statik und Singletons sind nach Möglichkeit zu vermeiden. Was macht Sie denken, Ihre aktuelle Lösung ist schlecht?

    Der empfohlene Weg, dies auf Android zu tun, ist ein ContentProvider zu verwenden . Ihr erster Content-Provider kann sich wie mehr Mühe fühlen, als es sich lohnt, aber sobald man das Muster nach unten bekommt, sollte es nicht so schlimm sein, vorausgesetzt du versuchst nicht, Blobs zu serialisieren.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.