嘉定北京网站建设,微信公众号怎么做文章推广,什么是企业网站源码,建设手机银行什么是Dagger和Hilt
Dagger和Hilt都是安卓端的依赖注入框架
通过注解生成的方式#xff0c;来取代手动创建对象的方式#xff0c;来管理对象和其作用域
Dagger是Square公司出品的#xff0c;而Hilt是由Google公司在Dagger的基础上优化而来
配置项目级别gradle buildscri…什么是Dagger和Hilt
Dagger和Hilt都是安卓端的依赖注入框架
通过注解生成的方式来取代手动创建对象的方式来管理对象和其作用域
Dagger是Square公司出品的而Hilt是由Google公司在Dagger的基础上优化而来
配置项目级别gradle
buildscript {repositories {mavenLocal()maven { url https://jitpack.io }maven { url https://maven.aliyun.com/repository/google }maven { url https://maven.aliyun.com/repository/central }maven { url https://maven.aliyun.com/repository/releases }google()mavenCentral()}dependencies {classpath com.android.tools.build:gradle:4.2.2classpath com.google.dagger:hilt-android-gradle-plugin:2.44}}task clean(type: Delete) {delete rootProject.buildDir}
配置模块级别gradle
apply plugin: com.android.applicationapply plugin: com.google.dagger.hilt.androidandroid {compileSdkVersion 30defaultConfig {applicationId com.android.codeminSdkVersion 28targetSdkVersion 30versionCode 1versionName 1.1.1testInstrumentationRunner androidx.test.runner.AndroidJUnitRunner}compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}buildFeatures {viewBinding truedataBinding true}}dependencies {api androidx.appcompat:appcompat:1.2.0api com.google.android.material:material:1.3.0api junit:junit:4.13.2androidTestImplementation androidx.test.ext:junit:1.1.2androidTestImplementation androidx.test.espresso:espresso-core:3.3.0//GSONapi com.google.code.gson:gson:2.8.7//RxJava2api io.reactivex.rxjava2:rxjava:2.1.3api io.reactivex.rxjava2:rxandroid:2.0.1//Retrofit2api com.squareup.retrofit2:retrofit:2.3.0api com.squareup.retrofit2:converter-gson:2.3.0api com.squareup.retrofit2:adapter-rxjava2:2.3.0//Dagger2api org.glassfish:javax.annotation:10.0-b28api com.google.dagger:dagger:2.47annotationProcessor com.google.dagger:dagger-compiler:2.47//Hiltapi com.google.dagger:hilt-android:2.44annotationProcessor com.google.dagger:hilt-android-compiler:2.44}
Hilt使用方式
由于Hilt是个Dagger基础上优化而来因此使用方式比较相似
这里我们只讲解Hilt的使用方式不再讲解Dagger 在Application上添加HiltAndroidApp注解 在需要注入对象的组件比如Activity或Fragment上添加AndroidEntryPoint注解 在需要注入对象的组件中通过Inject注解定义对象 在需要注入对象的默认构造方法上添加Inject注解 如果需要在某个作用域内共享对象可以在类名上添加作用域注解如SingletonActivityScopedViewScoped等 如果希望注入对象在其子组件中重新注入仍然生效可以通过Module注解定义一个专门的模块类 Module类需要通过InstallIn指定安装到哪个组件中Module类还需要提供一个方法用于生产对象 Module类中用于生产对象的方法需要添加作用域注解和Provides注解 Module类中Method上的作用域注解和InstallIn指定的组件范围必须对应
Hilt参考代码
public class User extends BaseObservable {public String account;public String password;public String name;Injectpublic User() {}Overridepublic String toString() {return hashCode() ;}}
AndroidEntryPointSuppressWarnings(all)public class HomeActivity extends AppCompatActivity {InjectUser user1;InjectUser user2;}
ModuleInstallIn(ActivityComponent.class)public class UserModule {ActivityScopedProvidespublic static User injectUser() {return new User();}}