Dagger的Scope注解代表的是作用域,通過(guò)實(shí)現(xiàn)自定義@Scope注解,標(biāo)記當(dāng)前生成對(duì)象的使用范圍,標(biāo)識(shí)一個(gè)類(lèi)型的注射器只實(shí)例化一次,在同一個(gè)作用域內(nèi),只會(huì)生成一個(gè)實(shí)例,
然后在此作用域內(nèi)共用一個(gè)實(shí)例。這樣看起來(lái)很像單例模式,我們可以查看@Singleton其實(shí)就是@Scope的一個(gè)默認(rèn)實(shí)現(xiàn)而已。當(dāng)然,你得是同一個(gè)Component對(duì)象來(lái)生成
Dagger為我們提供了Scope的一種實(shí)現(xiàn)Singleton。單例???no!!!no!!!no!!!不是這么簡(jiǎn)單的。先看一下它的代碼:
@Scope @Documented @Retention(RUNTIME)public @interface Singleton {}
在Dagger中我們可以自定義注解,譬如我們可以照著上面的模版自定義一個(gè)PreScope。
@Scope @Retention(RetentionPolicy.RUNTIME)public @interface PreScope { }
我們自定義的這個(gè)PreScope注解也有和Singleton同樣的作用(單例)。下面看一下它的使用!??!
@Modulepublic class AppModule7 { private App7 app; public AppModule7(App7 app) { this.app