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.

  • InitialisierungError für AndroidJunit4
  • Warum ist meine Facebook AppInviteDialog Anfrage nicht vom Zielfreund empfangen?
  • Wie kann man Touch Events auf einem Fragment behandeln?
  • Fehler beim Ausführen von 'play' auf 'HTMLMediaElement': API kann nur von einer Benutzergeste initiiert werden
  • Liste HTTP-Anfragen von Android-Handy
  • Holen Sie sich Hardware Seriennummer von Android-Gerät
  • 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?

  • Android 3.0 Kalenderansicht
  • Android: Verständnis der APK-Installation
  • Laden von Bild aus URL
  • Android SQLite select * aus der Tabelle wo Name wie% key% mit vorbereiteten Anweisungen
  • Hören Sie und antworten Sie auf ANR?
  • Öffnen Sie lokale KML-Datei in Google Maps auf Android
  • 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.