Andriod Dagger2依赖注入,面试题分享

在被依赖的类的构造函数上添加 @Inject 注解,表示我可以提供这个对象,你们可以用。

public class Xxx {

@Inject

public Xxx(){

}

}

或者

class AddressBookPresenter : BasePresenter() {

@Inject

lateinit var addressServiceImpl: AddressServiceImpl

}

class AddressServiceImpl @Inject constructor() : AddressService {

}

既然有了可以使用的对象,那么就需要有人去用他,这时XxxActivity出现了,表示我需要他,快给我,我是需求者,需要用@Module表示。

@Module

public class XxxActivity extends AppCompatActivity {

@Inject

Xxx mXxx;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

}

或者

/**

*Created by 付晓龙

*on 2018/10/9

*/

@Module

class AddressModule {

@Provides

fun addressService(service: AddressServiceImpl): AddressService {

return service

}

}

但是加进去了,需求者和提供者都有了,还没有用啊,该怎么用啊。这时就轮到@Component发挥作用了。然后,Dagger 预编译器会根据这个接口自动加上 Dagger- 前缀,生成一个实现类 DaggerXXXActivityComponent。

@Component

public interface XxxActivityComponent {

void inject(XxxActivity xxxActivity);

}

或者

/**

*Created by 付晓龙

*on 2018/10/9

*/

@PerComponentScope

@Component(dependencies = arrayOf(ActivityComponent::class), modules = arrayOf(AddressModule::class))

interface AddressComponent {

fun inject(activity: AddressBookActivity)

}

DaggerAddressComponent.builder().activityComponent(activityCoponent).addressModule(AddressModule()).build().inject(this)

这时提供者、需求者以及传递者都有,最后进行需要手动输入,决定注入的时机。这里就在 onCreate 注入 Xxx 对象,再次修改 XxxActivity,添加DaggerMainActivityComponent.create().inject(this):

@Module

public class XxxActivity extends AppCompatActivity {

@Inject

Xxx mXxx;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

DaggerXxxActivityComponent.create().inject(this);

最后

文章所有资料全部已经打包整理好,免费分享给有需要的人,另外小编手头上整理了大量Android架构师全套学习资料,Android核心高级技术PDF文档+全套高级学习资料+视频+2021 BAT 大厂面试真题解析,都是免费分享给大家的,全部都已整理在GitHub上,有需要的朋友可以点击前往领取更多。

资料展示:

image

image

image

6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)领取更多。**

资料展示:

[外链图片转存中…(img-XtJqtzsN-1645159390571)]

[外链图片转存中…(img-PSHAhDFm-1645159390572)]

[外链图片转存中…(img-OOQuMTmR-1645159390573)]

image

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值