Ich verstehe, zumindest auf dem Papier, den grundlegenden Unterschied zwischen dem Content Provider und direkt auf die SQLiteDatabase zugreifen. Ich habe einen funktionierenden Prototyp für meine Anwendung, und momentan ist es nur direkt in der Datenbank. Ich habe keine Erfahrung mit dem Content-Provider-Muster, aber ich habe herausgefunden, dass ich einige Daten mit einer anderen Anwendung teilen muss.Inhaltsanbieter vs direkten Datenbankzugriff (Transaktionsverwaltung)
Ich werde nur etwa 2 von einem Dutzend oder so Tabellen teilen, also habe ich mich gefragt, ob ich gerade die Datenschicht vollständig dem Content Provider-Muster folgen oder nur diese Tabellen nur über einen Content Provider verfügbar machen sollte aus Gründen der anderen Anwendung und immer noch direkt auf die Datenbank in der primären Anwendung zugreifen.
Eines der Probleme, die ich mit meinem Prototyp hatte, war, dass ich einige ziemlich komplexe Transaktionen habe und der Code, den ich geschrieben habe, ist nicht besonders gut und nicht wiederverwendbar. Da ich dieser App mehr Funktionalität hinzufüge, brauche ich eine besser gestaltete Datenzugriffsschicht, bevor ich meine eigene schreibe. Weiß jemand schon irgendwelche guten Ressourcen mit Entwurfsmustern für diese Art von Dingen? Muss ich, wenn ich die Route des Content Providers durchlaufen muss, auch die Datenbanktransaktionen kontrollieren?
Danke, und ich stimme zu, dass es keinen Grund geben würde, den Inhaltsanbieter zu verwenden, nur um ein Muster zu erfüllen. Tatsächlich ist auch der direkte Zugriff auf die Datenbank ein perfekt realisierbares Muster. Nach einigen Nachforschungen scheint es, dass der ContentProvider nicht in der Lage ist, Transaktionen über mehrere API-Aufrufe hinweg zu verwalten, wie ich sie benötigen würde (http://www.mail-archive.com/[email protected]/msg42281.html) Ich bleibe bei direktem Zugriff innerhalb der Kernanwendung und füge einfach den ContentProvider hinzu, um genau das zu zeigen, was benötigt wird. – Mike