目標類
public class B { @Inject public B() { } public String getName(){ return "BBBBBBB"; }}module類@Modulepublic class AModule { //單例獲取 @Singleton @PRovides A providesA(){ return new A(); }}component類@Singleton@Component(modules = AModule.class)public interface AComponent { void inject(NewActivity act);}activitypublic class NewActivity extends AppCompatActivity { @Inject A a1; @Inject A a2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_new); //實例化component對象 AComponent component = DaggerAComponent.builder().aModule(new AModule()).build(); //注入 component.inject(this); //single單例只適用于一個component,也就是說下一個activity中又是不同的對象了 Log.e("---------",a1.toString()+" "+a2.toString()); }}打印結果為:com.iwith.dagger.xinde.A@d1f1395 com.iwith.dagger.xinde.A@d1f1395
注意點:
1:module中需要添加@singleton
2:component需要添加@singleton,不然會編譯不過
3:這個只能在同個activity中,如果在另一個activity中的話,創建的實例就會使另一個了,不會是單例了,可見,@singleton只對一個component有效,即其單例所依賴component對象
新聞熱點
疑難解答