2015-07-01 15 views
5

Google Dagger 2 riguarda esclusivamente gli ambiti oggetto, ad es. quando hai bisogno di oggetti solo durante una richiesta http, annoti i metodi del tuo provider con @RequestScope.Come assicurarsi che le risorse vengano rilasciate utilizzando Google Dagger 2

Ma alcune risorse fornite devono essere rilasciato, ad esempio un CloseableHttpClient bisogno di essere closed o un ExecutorService deve essere shutdown.

Come è possibile specificare quali azioni devono essere intraprese per rilasciare un oggetto quando non è più in uso utilizzando Google Dagger 2?

risposta

1

Come specificare quali azioni devono essere intraprese per rilasciare un oggetto quando non è più in uso utilizzando Google Dagger 2?

Non è possibile. Dagger 2 si occupa di fornire dipendenze per creare oggetti, non per gestirli.

Se si dispone di oggetti che devono essere arrestati o arrestati, sarà comunque necessario utilizzare i metodi del ciclo di vita dei componenti — come attività onDestroy — per farlo.

+0

Ma allora qual è lo scopo? Un ambito non globale implica che l'ambito finirà? Ciononostante ottengo la parte su * Dagger riguarda la gestione delle dipendenze, non le durate degli oggetti * – ooxi

+1

@ooxi Gli ambiti sono raggruppare le cose che vanno insieme. Potresti avere un '@ AccountManager di @Singleton 'ma ogni utente avrebbe il proprio' @PerUser Balance'. Gli ambiti aiutano a garantire che gli oggetti con la stessa durata si trovino nello stesso componente e che nulla di ciò che cambia meno spesso dipenda da essi, poiché l'utente potrebbe cambiare più frequentemente rispetto a un singleton (che non dovrebbe cambiare). –

+0

Grazie per il chiarimento! – ooxi

Problemi correlati