2015-07-01 14 views
5

Google Dagger 2 to wszystko o zakresach obiektów, np. kiedy potrzebujesz obiektów tylko podczas żądania http, zanotuj swoje metody dostawcy za pomocą @RequestScope.Jak zapewnić dostęp do zasobów za pomocą Google Dagger 2

Ale niektóre przewidziane środki muszą być wydane na przykład do CloseableHttpClient należy closed lub ExecutorService musi być shutdown.

Jak mogę określić, jakie działania należy podjąć, aby zwolnić obiekt, gdy wykracza on poza zasięg, używając Google Dagger 2?

Odpowiedz

1

Jak mogę określić, jakie działania należy podjąć, aby zwolnić obiekt, gdy wykracza on poza zasięg, używając Google Dagger 2?

Nie możesz. Dagger 2 polega na zapewnieniu zależności w celu tworzenia twoich obiektów, a nie na zarządzaniu nimi.

Jeśli posiadasz obiekty, które wymagają zatrzymania lub zamknięcia, nadal będziesz musiał korzystać z metod cyklu życia komponentów, takich jak —, takich jak działania onDestroy , aby to zrobić.

+0

Ale o co chodzi w tym zakresie? Czy zasięg inny niż globalny oznacza, że ​​zakres zostanie zakończony? Niemniej jednak dostaję tę część o * Sztylet jest o zarządzaniu zależnościami, a nie okresami życia obiektów * – ooxi

+1

@ooxi Zakresy to grupowanie rzeczy, które idą w parze. Możesz mieć jednego '@Singleton AccountManager', ale każdy użytkownik otrzyma własny" @PerUser Balance ". Zakresy pomagają zapewnić, że obiekty o tym samym czasie życia kończą się w tym samym komponencie i że nic, co zmienia się rzadziej, zależy od nich, ponieważ użytkownik może zmieniać się częściej niż niektóre pojedyncze (które nie powinny się zmieniać). –

+0

Dziękujemy za wyjaśnienia! – ooxi

Powiązane problemy