美文网首页Android开发Android开发经验谈Android开发
3. 【浅入深出理解 dagger、Hilt】 - dagger

3. 【浅入深出理解 dagger、Hilt】 - dagger

作者: zhongjh | 来源:发表于2022-04-27 16:20 被阅读0次

    上一篇写了dagger2的无参依赖注入代码,那么该篇就是有参依赖注入代码了
    这次场景很简单,单纯在一个Activity构造并且使用一个实体类,参数由Activity传递

    1. 依然使用 @Inject 标记
    public class MainEntity {
    
        @Inject
        public MainEntity(String name) {
            this.name = name;
        }
    }
    

    不过这次的构造函数有点不一样,我们需要传递一个name

    2. 使用@Module 和 @Provides
    @Module
    public class MainModule {
    
        String name;
    
        public MainModule(String name) {
            this.name = name;
        }
    
        @Provides
        MainEntity provideMainParameter() {
            return new MainEntity(name);
        }
    
    }
    
    • 使用@Module标注类,表示它为工厂
    • 在类中使用@Provides标注方法,表示它为工厂提供实例的方法。
      在该方法中对实例进行初始化并返回该实例。
    3. 创建中介类,使用@Component
    @Component(modules = {MainModule.class})
    public interface MainComponent {
        /**
         * 该方法名随意起,不管起什么,起多少个,最终生成的代码都是参数跟注入的MainModel结合
         * 当然,只能放置一个参数,如果加入多个参数会运行编译报错
         */
        void inject(MainActivity activity);
    }
    

    上一篇已经具体介绍@Component,唯一区别是因为用到了Module,所以要给个额外标记

    4. 在Activity使用实体类
    public class MainActivity extends AppCompatActivity {
    
        @Inject
        MainEntity mainEntity;
    
        @Override
        public void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            DaggerMainComponent.builder().mainModule(new MainModule("参数")).build().inject(this);
    
            ((TextView) findViewById(R.id.tvName)).append("_" + mainEntity.getName());
        }
    }
    

    那么这边已经介绍完毕有参的依赖注入了,我们主要还是深入了解Hilt,因为Hilt是google简化dagger的代码而产生的新的依赖注入库。所以dagger暂时结束了!

    只是简单介绍依赖注入使用方式的实例源码如下:
    zhongjhATC/HiltAndDaggerDemo: 演示 Hilt、Dagger 的demo (github.com)

    其他相关文章
    1. 【浅入深出理解 dagger、Hilt】 - 简介 - 简书 (jianshu.com)
    2. 【浅入深出理解 dagger、Hilt】 - dagger无参依赖注入 - 简书 (jianshu.com)
    3. 【浅入深出理解 dagger、Hilt】 - dagger有参依赖注入 - 简书 (jianshu.com)
    4. 【浅入深出理解 dagger、Hilt】 - Hilt - 简书 (jianshu.com)

    相关文章

      网友评论

        本文标题:3. 【浅入深出理解 dagger、Hilt】 - dagger

        本文链接:https://www.haomeiwen.com/subject/bhvcyrtx.html