2015-07-01 2 views
5

Google Dagger 2 - все о объектах, например. когда вам нужны объекты только во время HTTP-запроса, вы комментируете свои методы провайдера с помощью @RequestScope.Как обеспечить выделение ресурсов с помощью Google Dagger 2

Но некоторые предлагаемые ресурсы должны быть освобождены например, таким CloseableHttpClient должна быть closed или ExecutorService должен быть shutdown.

Как я могу указать, какие действия необходимо предпринять для освобождения объекта, когда он выходит из сферы действия с помощью Google Dagger 2?

ответ

1

Как я могу указать, какие действия необходимо предпринять для освобождения объекта, когда он выходит из сферы действия с помощью Google Dagger 2?

Вы не можете. Кинжал 2 - это предоставление зависимостей для создания ваших объектов, а не управления ими.

Если у вас есть объекты, которые необходимо остановить или выключить, вам все равно придется использовать методы жизненного цикла ваших компонентов — как действия onDestroy — для этого.

+0

Но в чем же суть? Разве не глобальная область подразумевает, что масштаб закончится? Тем не менее, я понимаю, что «Кинжал» - это управление зависимостями, а не объектами жизни. * – ooxi

+1

@Ooxi Scope - это группировать вещи, которые идут вместе. У вас может быть один '@Singleton AccountManager', но каждый пользователь получит свой собственный' @PerUser Balance'. Области помогают гарантировать, что объекты с одинаковым сроком жизни в одном и том же компоненте и что ничто, что изменяется менее часто, зависит от них, так как пользователь может меняться чаще, чем какой-то один сингл (который не должен меняться). –

+0

Спасибо за разъяснение! – ooxi