最后
分享一份工作1到5年以上的Android程序员架构进阶学习路线体系,希望能对那些还在从事Android开发却还不知道如何去提升自己的,还处于迷茫的朋友!
-
阿里P7级Android架构师技术脑图;查漏补缺,体系化深入学习提升
-
**全套体系化高级架构视频;**七大主流技术模块,视频+源码+笔记
有任何问题,欢迎广大网友一起来交流
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
@Module
public class TomatoModule {
@Provides
public Tomato provideTomato(){
return new Tomato();
}
}
**TomatoComponent.class**
@Component(modules = {TomatoModule.class})
public interface TomatoComponent {
// ★前面说过这里的这个方法是可以不写的,
// 但是,如果你想让别的Component依赖这个Component,
// 就必须写,不写这个方法,就意味着没有向外界,暴露这个依赖
Tomato provideTomato();
// void inject(Object o);//这里的西红柿并没有想注入到那个类中,可以不写inject方法
}
#### 2\. ok,煎饼果子已经做好了,我们想在Salad里直接注入tomato对象,怎么做呢
* 只需要在SaladComponent里引入TomatoComponent即可
**dependencies = {TomatoComponent.class}**
```
```
@Component(modules = {SaladModule.class},dependencies = {TomatoComponent.class})//引入TomatoComponent
public interface SaladComponent {
.....
//这里代码不用动
}
```
```
* 在Salad里面注入tomato,别忘了“tomatoComponent(tomatoComponent)”
```
public class Salad {
@Inject
Tomato tomato;
......
public Salad() {
// 这里必须先得到TomatoComponent
TomatoComponent tomatoComponent = DaggerTomatoComponent.builder().tomatoModule(new TomatoModule()).build();
// 在这里通过传入“tomatoComponent(tomatoComponent)”构建SaladComponent,
SaladComponent saladComponent = DaggerSaladComponent.builder().saladModule(new SaladModule()).tomatoComponent(tomatoComponent).build();
saladComponent.inject(this);
......
}
......
}
```
#### 3\. 测试,tomato注入成功了
E/TAG: 我是一个西红柿
### 以下内容摘自[Android常用开源工具(2)-Dagger2进阶]( )
### 除了dependencies还可以使用SubComponent,相当于子父类继承关系
如果一个Component的功能不能满足你的需求,你需要对它进行拓展,一种办法是使用Component(dependencies=××.classs)。另外一种是使用@Subcomponent,Subcomponent用于拓展原有component。同时,这将产生一种副作用——子component同时具备两种不同生命周期的scope。子Component具备了父Component拥有的Scope,也具备了自己的Scope。
Subcomponent其功能效果优点类似component的dependencies。但是使用@Subcomponent不需要在父component中显式添加子component需要用到的对象,只需要添加返回子Component的方法即可,子Component能自动在父Component中查找缺失的依赖。
//父Component:
@PerApp
@Component(modules=××××)
public AppComponent{
SubComponent subcomponent(); //1.只需要在父Component添加返回子Component的方法即可
}
//子Component:
@PerAcitivity //2.注意子Component的Scope范围小于父Component
@Subcomponent(modules=××××) //3.使用@Subcomponent
最后
如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。
最后针对Android程序员,我这边给大家整理了一些资料,包括不限于高级UI、性能优化、移动架构师、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!