android开源框架24-25dagger2hilt

ioc技术

  1. 依赖注入框架,目前主要用于隔离层设计。
  2. 老的技术dagger2 虽然源码量不多,但是用起来还是需要写好些东西。
  3. 代理方式的隔离层设计
  • IProcessor 定义一个处理器接口:如果需要回调,则可以在这里的方法传入回调的父接口,在实现一个接口,供调用。
  • ProcessorImpl 处理器接口的1个或者多个实现
  • ProcessorHelper 代理帮助类,在里面通过调用 IProcessor的方法来达到代理效果,需要提供初始化要用哪个实现的接口注入;单例。
  • 一般在Application里面做初始化ProcessorHelper,选择用哪个ProcessorImpl
  • 在调用的地方通过ProcessorHelper调用,则实现了第三方接口,比如网络、数据库这些可以方便的切换。
  1. hilt
  • 作为谷歌和dagger2团队合作封装的基于安卓优化后的技术,省掉了commponent和预制了一些自动绑定和限定,在大部分安卓场景下已够用,不够的时候再用dagger2

hilt

  1. 配置
  • 用1.8的jdk 避免小坑
  • 依赖里面注意有gradle插件依赖 和annotaionProcessor注解处理器依赖
  • 目前支持到安卓的常用类,如Application,Activity,Fragment,view...
  1. 使用
  • IxxProcessor
public interface IxxProcessor{
    void dosomthiing(String xx,ICallBack callback);
}
  • xxProcessorModel
@Module
@InstallIn(ApplicationComponent.class)
public abstract class xxProcessorModel{

    @Bindxx1
    @Binds
    @Singleton //全局单例 不需要的话不写
    abstract IxxProcessor bindxx(xxProcessorImpl xxprocessor);

    @Bindxx2 //有多个才加这个,自定义的注解,标记@Qualifier即可 @Retention还是要的
    @Binds
    @Singleton //全局单例 不需要的话不写
    abstract IxxProcessor bindxx(xxProcessorImpl xxprocessor);
}
  • application注册
@HiltAndroidApp
public class xxApplication extends Application{
  
  @Bindxx1
  @Inject
  IxxProcessor ixxProcessor;  //这个也可以在Activity那里用

  public IxxProcessor getixxProcessor(){
      return ixxProcessor;
  }  
}
  • 注入activity
@AndroidEntryPoint
public class xxActivity extends AppCompatActivity{

IxxProcessor ixxProcessor;

  ...onCreate...{
    super.onCreate... //必须
    ixxProcessor = ((xxApplication) getApplication).getixxProcessor();
    //使用
    ixxProcessor.doSomething(xx,new xxCallBack...);
  }

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容