Android-Daily-Interview icon indicating copy to clipboard operation
Android-Daily-Interview copied to clipboard

2019-12-13:请说说依赖注入框架ButterKnife的实现原理?

Open Moosphan opened this issue 4 years ago • 3 comments

Moosphan avatar Dec 13 '19 01:12 Moosphan

1.通过注解器在编译期间生成一个XX_ViewBinding.java文件(XX可以是activity,fragment,adapter,dialog),这个文件这么生成的? 注解器里会添加需要类型的注解; 查找XX类中的特定类型注解,如果有,拼接成字符串,创建并写到XX_ViewBinding.java文件中 2.XX_ViewBinding.java会持有XX的引用, 如果是初始化控件,通过xx.findViewById实现 如果是设置监听,类似xx.setOnClickListener实现 3.XX类中初始化XX_ViewBinding对象,这样打通了整个流程

WislieZhu avatar Jan 05 '20 13:01 WislieZhu

注解技术,在编译阶段生成java代码 (1)开始它会扫描java代码中所有的ButterKnife注解 onbindview onclickVIew (2)ButterknifeProcessor -><className>$$ViewBinder (3)调用bind方法加载生成的ViewBInderl类

fenggeZhang avatar Jan 06 '20 08:01 fenggeZhang

使用ButterKnife是为了简化代码 通过注解代替findViewById ButterKnife是在编译时注解 不会影响APP的效率和性能 ButterKnife的实现原理是通过注解和注解器对每个Activity生成一个相对应的类 把原本需要findViewById和点击事件利用注解生成代码

mlinqirong avatar Jan 04 '22 02:01 mlinqirong