Singleton gegen eine statische innere Klasse für die Database Helper-Klasse in Android

8

Ich versuche zu sehen, welche dieser Implementierungen besser für den Zugriff auf SQLite-Datenbank in Android-Anwendungen

ist

Implementierung 1

Verwenden von DatabaseHelper-Klassen, die SqliteOpenHelper erweitern und Singleton-Muster verwenden. In einigen seltenen Fällen sehe ich Abstürze, weil die Datenbank geschlossen wird. Obwohl es ein wenig irritierend war, ließ ich sie durchgehen, nur weil es im großen Plan der Dinge und der Anzahl der Projekte, die ich habe, unbedeutend war.

%Vor%

Implementierung 2

Die andere Möglichkeit, dies zu implementieren, besteht darin, die Hilfsklasse als statische innere Klasse innerhalb der Content-Provider-Klasse zu erstellen. Dies wird im Editor-Beispiel in den Beispielen gemacht.

%Vor%

Welche von diesen ist eine bessere oder Standardweise der Dinge und warum. Ich vermute, es ist der zweite Ansatz, da es eine innere Privatklasse ist, aber gerne eine Expertenmeinung haben würde.

Ich verwende Content Provider immer, wenn das wichtig ist.

Danke

    
achie 28.02.2013, 01:53
quelle

1 Antwort

1

Ich tue das auch nicht. Ich habe eine nicht statische Klasse, die SqliteOpenHelper erweitert. Wann immer ich die db benötige, öffne ich sie, indem ich eine neue DBHelper -Instanz erstelle, mache, was ich tun muss, und schließe sie sofort, und öffne sie später nur dann wieder, wenn ich sie brauche. Es ist möglich, mit dieser Implementierung in den Fall zu kommen, wo zwei Codeabschnitte versuchen, die Datenbank gleichzeitig zu ändern. Um dies zu vermeiden, wickeln Sie jede Methode in synchronisierte Blöcke ein. Mit diesem Ansatz hatte ich keine Probleme.

    
Jason Robinson 28.02.2013 02:09
quelle