T
Tom299
Stammgast
- 122
Hallo,
ich habe bis jetzt noch keinen Service programmiert, aber ich würde gerne mal wissen, ob es Sinn macht, den Zugriff auf die DB als Service zu implementieren.
Hintergund: Ich habe zur Zeit ca. 20 Activities, die alle auf die gleiche DB zugreifen. Ich habe den DB-Helper statisch gemacht, damit ich nicht überall den DBHelper erzeugen muß, um dann die DB zu öffnen bevor ich Abfragen starten kann. Das hat auch lange Zeit ohne Probleme funktioniert.
Aber auf meinem HTC Sensation herrscht oft Speichermangel, und so kommt es hin und wieder vor, daß Android meine statische Klasse entsorgt und somit ist meine DB-Verbindung hinüber. Ähnliches passiert, wenn ich die CAM über das Intent aufrufe, auch da werden hin und wieder Activities und meine statische Klasse entsorgt.
Als Workaround hab ich nun in jeder Activity den DBHelper erzeugt, öffne die DB vor jedem DB-Zugriff und danach schließe ich die DB wieder. Daduch hab ich keine Probleme mehr wenn die Activity zerstört wird oder in onPause geht. Aber ich glaube nicht, daß das wirklich performant ist. Den Cursor schließt man nach jeder Abfrage, das ist klar, aber die DB doch nicht, oder?
Jedenfalls dachte ich mir, daß ich einen Service habe, der mir die DB-Connection zur Verfügung stellt. Startet der Service, wird die DB geöffnet und bleibt solange offen, bis meine Anwendung beendet wird. Beim Beenden sollte die DB geschlossen werden. D.h. ich müßte mich in meinen Activities nur noch um das Schließen des Cursors kümmern, die DB-Connection sollte immer verfügbar sein.
Ist das ein guter Ansatz? Oder ist es legitim, in jeder Activity den DBHelper zu erzeugen und DB open und close bei allen Aufrufen zu machen?
Gruß Tom
ich habe bis jetzt noch keinen Service programmiert, aber ich würde gerne mal wissen, ob es Sinn macht, den Zugriff auf die DB als Service zu implementieren.
Hintergund: Ich habe zur Zeit ca. 20 Activities, die alle auf die gleiche DB zugreifen. Ich habe den DB-Helper statisch gemacht, damit ich nicht überall den DBHelper erzeugen muß, um dann die DB zu öffnen bevor ich Abfragen starten kann. Das hat auch lange Zeit ohne Probleme funktioniert.
Aber auf meinem HTC Sensation herrscht oft Speichermangel, und so kommt es hin und wieder vor, daß Android meine statische Klasse entsorgt und somit ist meine DB-Verbindung hinüber. Ähnliches passiert, wenn ich die CAM über das Intent aufrufe, auch da werden hin und wieder Activities und meine statische Klasse entsorgt.
Als Workaround hab ich nun in jeder Activity den DBHelper erzeugt, öffne die DB vor jedem DB-Zugriff und danach schließe ich die DB wieder. Daduch hab ich keine Probleme mehr wenn die Activity zerstört wird oder in onPause geht. Aber ich glaube nicht, daß das wirklich performant ist. Den Cursor schließt man nach jeder Abfrage, das ist klar, aber die DB doch nicht, oder?
Jedenfalls dachte ich mir, daß ich einen Service habe, der mir die DB-Connection zur Verfügung stellt. Startet der Service, wird die DB geöffnet und bleibt solange offen, bis meine Anwendung beendet wird. Beim Beenden sollte die DB geschlossen werden. D.h. ich müßte mich in meinen Activities nur noch um das Schließen des Cursors kümmern, die DB-Connection sollte immer verfügbar sein.
Ist das ein guter Ansatz? Oder ist es legitim, in jeder Activity den DBHelper zu erzeugen und DB open und close bei allen Aufrufen zu machen?
Gruß Tom