2013-12-17 23 views
5

W dokumentacji ORMLite it is recommended, aby utworzyć OrmLiteSqliteOpenHelper dla każdej aktywności. Ponieważ uzyskanie helpera wymaga tylko obiektu Context, dlaczego nie utworzyć helpera bazy danych raz dla całego obiektu Application? To otwiera możliwość wstrzyknięcia pomocnika bazy danych za pomocą Daggera (lub innych struktur wtryskowych) do klas, które tego potrzebują.Dlaczego nie wiązać OrmLiteSqliteOpenHelper do aplikacji zamiast działalności?

Czy istnieje powód, aby nie tworzyć pojedynczego pomocnika bazy danych dla całej aplikacji? Czy preferuje się, aby każde działanie miało własny helper bazy danych? Mogę sobie wyobrazić, że dzięki temu rozmiar pamięci podręcznej helpera jest mały, ponieważ pamięć podręczna zawiera tylko obiekty związane z jego działaniem.

Odpowiedz

4

W dokumentacji ORMLite zaleca się utworzenie OrmLiteSqliteOpenHelper dla każdego działania.

Nie powinno to być co oznacza, że ​​trzeba oddzielny wystąpienie pomocnika dla każdej działalności. Na pewno możesz/powinien udostępniać pomocnika w całej aplikacji.

Cytując z docs:

Zalecamy używanie OpenHelperManager monitorować użycie pomocnika - stworzy go na pierwszym dostępie, śledzić za każdym razem część kodu jest go używać, a następnie zamknie ostatni czas zwolnienia pomocnika.

OpenHelperManager tworzy i zarządza pomocnik singleton.

Jeśli wskażesz mi punkt w dokumentacji, który wskazuje, że potrzebujesz innej na działanie, a ja ją poprawię?

+1

Nie ma jednoznacznego stwierdzenia, że ​​każdy obiekt powinien mieć odrębne instancje '' OrmLiteSqliteOpenHelper'''. Właśnie znalazłem przykłady promujące tę strategię. Nie powinienem twierdzić w moim pytaniu, że dokumentacja wyraźnie zaleca w ten sposób. –

+0

Np @LarsBlumberg. Daj mi znać, jeśli dokumenty (lub przykłady) muszą zostać zmienione, aby lepiej to odzwierciedlić. – Gray