Hilt基本使用(网络框架为例)

hit是android的依赖注入库 是andorid团队和Dagger2团队联合起来开发的专门用于android的依赖注入库

使用hit不需要向Dagger2一样写大量的Component代码了


其中需要使用到的注解有:

使用方式:

一 :在项目build.gradle中引入插件

classpath 'com.google.dagger:hilt-android-gradle-plugin:2.28-alpha'

二:在app的build.gralde中

apply plugin: 'dagger.hilt.android.plugin'

//hilt

    implementation "com.google.dagger:hilt-android:2.28-alpha"

    annotationProcessor "com.google.dagger:hilt-android-compiler:2.28-alpha"

    //net

    implementation 'com.android.volley:volley:1.1.0'

    implementation 'com.google.code.gson:gson:2.2.4'

    implementation 'com.squareup.okhttp3:okhttp:3.4.1'

    implementation 'org.xutils:xutils:3.3.36'


三:提供对象obj(和dagger2相同)

四:设置module(和dagger2相同)  上面增加一个@InstallIn(ActivityComponent.class) 注解


五:所有使用hit的应用都必须包含一个@HiltAndroidApp注解的application

六:在activity中使用


单例的使用:  上面方法 如果设置两个okHttpProcessor对象的话 不是一个


打印结果hashcode值不相同



如果使用单例的话  如下:

需要将module中scope转换为@InstallIn(ApplicationComponent.class) &&在provider方法上加上@SingleTon 即可


再次打印结果相同


接口注入:

一:定义接口


public interface CookInterface {

void cookFood();

}


二:设置实现类  我这里设置了两个 实现类上必须有构造方法并加入对应的注解

public class MotherCookimplements CookInterface{

@Inject

    public MotherCook() {

}

@Override

    public void cookFood() {

Log.d("拉拉","MotherCook注入成功");

    }

}


另一个

//保姆做饭

public class Nannyimplements CookInterface {

//构造方法一定要有 &&必须加入注解@Inject

    @Inject

    public Nanny() {

}

@Override

    public void cookFood() {

Log.d("拉拉","Nanny注入成功");

    }

}



设置相应的Modlue 注意这里适应@Binds注解  我这里设置了两个方法提供对应的实现 所以加上了限定符 @Named

@InstallIn(ActivityComponent.class)

@Module

public abstract class CookMoudle {

//使用@Binds注解 参数中传入对应的实体类

    @Named("key2")

@Binds

    abstract CookInterfaceproviderCook(Nanny nanny);

    @Named("key1")

@Binds

    abstract CookInterfaceproviderCook1(MotherCook nanny);

}

这里在activity中使用


打印结果:
















Hilt 目前支持以下 Android 类:

Application(通过使用 @HiltAndroidApp)

ViewModel(通过使用 @HiltViewModel)

Activity

Fragment

View

Service

BroadcastReceiver

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容