概述:
1:Dagger2是编译时完成注入,没有采用反射,采用的是APT技术。
2:当我们需要对一段代码进行拦截修改的时候,我们有很多方案,最常见的是通过反射。但是反射是在运行时的工作,对性能有很大的影响,所以提出了APT技术,该技术可以在编译期对代码进行拦截,并进行修改,生成新的可执行的类。
用法:
1:定义一个需要使用的类:
public class HttpObject { }
2:定义一个Module,生成HttpObject的实例:
@Module public class HttpModule { @Provides public HttpObject provideHttpObject() { return new HttpObject(); } }
3:定义一个Component,包裹上述的Component:
@Component(modules = {HttpModule.class, DatabaseModule.class}) public interface MyComponent { void injectMainActivity(MainActivity mainActivity); }
4:使用:
public class MainActivity extends AppCompatActivity { @Inject HttpObject httpObject; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DaggerMyComponent.create().injectMainActivity(this); Log.i("test--->", String.valueOf(httpObject.hashCode())); }