ioc技术
- 依赖注入框架,目前主要用于隔离层设计。
- 老的技术dagger2 虽然源码量不多,但是用起来还是需要写好些东西。
- 代理方式的隔离层设计
- IProcessor 定义一个处理器接口:如果需要回调,则可以在这里的方法传入回调的父接口,在实现一个接口,供调用。
- ProcessorImpl 处理器接口的1个或者多个实现
- ProcessorHelper 代理帮助类,在里面通过调用 IProcessor的方法来达到代理效果,需要提供初始化要用哪个实现的接口注入;单例。
- 一般在Application里面做初始化ProcessorHelper,选择用哪个ProcessorImpl
- 在调用的地方通过ProcessorHelper调用,则实现了第三方接口,比如网络、数据库这些可以方便的切换。
- hilt
- 作为谷歌和dagger2团队合作封装的基于安卓优化后的技术,省掉了commponent和预制了一些自动绑定和限定,在大部分安卓场景下已够用,不够的时候再用dagger2
hilt
- 配置
- 用1.8的jdk 避免小坑
- 依赖里面注意有gradle插件依赖 和annotaionProcessor注解处理器依赖
- 目前支持到安卓的常用类,如Application,Activity,Fragment,view...
- 使用
public interface IxxProcessor{
void dosomthiing(String xx,ICallBack callback);
}
@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);
}
@HiltAndroidApp
public class xxApplication extends Application{
@Bindxx1
@Inject
IxxProcessor ixxProcessor; //这个也可以在Activity那里用
public IxxProcessor getixxProcessor(){
return ixxProcessor;
}
}
@AndroidEntryPoint
public class xxActivity extends AppCompatActivity{
IxxProcessor ixxProcessor;
...onCreate...{
super.onCreate... //必须
ixxProcessor = ((xxApplication) getApplication).getixxProcessor();
//使用
ixxProcessor.doSomething(xx,new xxCallBack...);
}
}