前言
ViewModelValidationPlugin用于校验@HiltViewModel注解和外部的关联。ViewModelProcessor
类处理@HiltViewModel。当前使用该注解的节点校验并且生成ViewModelMetadata
对象,针对该ViewModelMetadata
对象再生成类。
ViewModelValidationPlugin
代码本身存在缺陷,所以做了简单处理,重点看
visitGraph(bindingGraph: BindingGraph, diagnosticReporter: DiagnosticReporter)
方法即可。其他的不用管。
@HiltViewModel修饰的目的在于使用当前ViewModelProcessor创建ViewModel 实例;
现已一个案例来说明:
@Module
public class XXModule{
@Binds
@IntoMap
@StringKey(...)
@HiltViewModelMap
abstract ViewModel bindViewModel(FooViewModel vm)
}
以上bindViewModel
方法的依赖匹配的是FooViewModel类使用@Inject修饰的构造函数
,如下:
@HiltViewModel
class FooViewModel extends ViewMod