2015-08-27 7 views
6

Che cosa è il significato e scopo di @Injecte/o@InjectView annotazioni nella programmazione Android/Java?@Inject Android e @InjectView annotazioni significato

Come posso usarlo?

Grazie in anticipo!

+0

So che le persone usano questi con Butterknife, al fine di impostare i layout con meno righe di codice di quanto normalmente richiesto: https://github.com/JakeWharton/butterknife – joshgoldeneagle

+0

Sì, ho trovato queste annotazioni, e ci sono così tante librerie che lo usano, ma non so come e lo scopo. –

risposta

9

Per Android, queste annotazioni fanno parte dello Roboguice framework. Sono utilizzati per fornire dependency injection in un ambiente Android.

Ciò consente di iniettare direttamente un'istanza della risorsa desiderata, che si tratti di un POJO di base, di una vista o di un'altra risorsa. Ecco un esempio POJO dal RoboGuice wiki:

class MyActivity extends RoboActivity { 
    @Inject Foo foo; // this will basically call new Foo(); 
} 

Questo è un banale, ma in sostanza il punto di iniezione sta permettendo la classe per rimanere indipendente creazione/gestione di un'istanza della classe Foo iniettato e invece applica una responsabilità Foo stesso chiamando il costruttore di default di Foo in questo caso. Ciò consente di testare più facilmente tramite qualcosa come mock poiché MyActivity è libero dai dettagli dell'effettiva creazione di Foo stesso.

+0

Ok, ma qual è lo scopo dell'annotazione @Inject? –

+0

Aggiunto un po 'alla risposta. Non è affatto approfondito, ma si spera che i link forniscano una guida. – whitlaaa

+0

Ho una classe che "estende RoboActivity', come hai detto, e usa @Inject come questo: @Inject sensorManager sensorManager; @Inject pref private sharedPreferences; Perché è utile iniettare SharedPreferences, ad esempio? E come è in grado di ottenere i valori da 'prefs' senza costrutto o impostarlo prima? –