2015-07-01 15 views
5

Google Dagger 2 là tất cả về phạm vi đối tượng, ví dụ: khi bạn cần các đối tượng chỉ trong một yêu cầu http, bạn chú thích các phương pháp nhà cung cấp của mình với @RequestScope.Cách đảm bảo tài nguyên được phát hành bằng cách sử dụng Google Dagger 2

Nhưng một số tài nguyên được cung cấp cần được giải phóng, ví dụ: CloseableHttpClient cần phải là closed hoặc ExecutorService cần phải là shutdown.

Làm cách nào để chỉ định hành động nào cần thực hiện để phát hành một đối tượng khi nó vượt quá phạm vi sử dụng Google Dagger 2?

Trả lời

1

Tôi làm cách nào để chỉ định hành động nào cần thực hiện để phát hành một đối tượng khi nó vượt quá phạm vi sử dụng Google Dagger 2?

Bạn không thể. Dagger 2 là về việc cung cấp các phụ thuộc để tạo ra các đối tượng của bạn, chứ không phải về việc quản lý chúng.

Nếu bạn có các đối tượng cần dừng hoặc tắt, bạn vẫn sẽ phải sử dụng các phương pháp vòng đời thành phần của mình — như hoạt động onDestroy — để làm như vậy.

+0

Nhưng sau đó phạm vi phạm vi là gì? Không phải là phạm vi toàn cầu không ngụ ý rằng phạm vi sẽ kết thúc? Tuy nhiên tôi nhận được một phần về * Dagger là về quản lý phụ thuộc, không phải đối tượng lifetimes * – ooxi

+1

@ooxi Phạm vi là nhóm những thứ mà đi với nhau. Bạn có thể có một '@Singleton AccountManager' nhưng mọi người dùng sẽ nhận được' @PerUser Balance' của riêng họ. Phạm vi giúp đảm bảo rằng các đối tượng có cùng tuổi thọ trong cùng một thành phần và không có gì thay đổi ít thường xuyên phụ thuộc vào chúng, vì người dùng có thể thay đổi thường xuyên hơn một số singleton (không nên thay đổi). –

+0

Cảm ơn vì đã làm rõ! – ooxi

Các vấn đề liên quan