butterknife、dagger

ButterKnife

1.app-配置

在这里插入图片描述
1.androidx

implementation 'com.jakewharton:butterknife:10.1.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'

2.其它版本

  /**
     * ButterKnife依赖
     */
    implementation 'com.jakewharton:butterknife:8.0.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.0.0'

2.Module配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.详细代码

@Route(path = "/user/activity")
public class MainActivity extends AppCompatActivity {

    @BindView(R.id.usr_btn)
    Button button;

    @BindString(R.string.userModule)
    public String loginErrorMessage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ButterKnife.bind(this);
        Log.d("amy", "showText: "+loginErrorMessage);
    }

    @OnClick(R.id.usr_btn)
    public void showText(View view){
        button.setText("User模块的按钮");
        Log.d("amy", "showText: "+loginErrorMessage);
    }
}

https://github.com/amy-nn/butterknife

Dagger

在这里插入图片描述
Dagger2是通过依赖注入完成类的初始化。
这个过程需要三部分:
#1 依赖提供方(生产者)
#2 依赖注入容器(桥梁)
#3 依赖需求方(消费者)

连接提供依赖和消费依赖对象的组件被称为Injector,@Inject标志被注入的对象不能为private.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Dagger捋思路

1.TestActivity类中的mPresent对象需要被注入,所以在mPresent对象上添加了@Inject,同时在TestPresent类的构造方法添加@inject
2.创建TestPresent对象时需要参数IView类型的对象,所以需要通过依赖获取这些对象,就有了@Module注释
3.@Module注解对过@provides注解的以provide开头的方法对外提供需要的参数,一般情况下有几个参数就有几个带@provides的方法
4.这时候就需要一个桥梁将构造和参数联系在一起,@Component修饰的接口或抽象类就起到了桥梁的作用,modules属性指向需要依赖的Module类,inject方法指定在哪个类中实例化mPresent对象
5.reBuild项目后,会生成对应的Java类,通过DaggerTestComponent.builder().testModel(new TestModule(this)).build().inject(this);来完成注入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值