Android自己动手打造一套IOC注解框架

释放双眼,带上耳机,听听看~!

1.简介

主要有Android源码阅读设计模式分析,以及第三方框架源码分析。代码最终需要审核。

2.IOC 反射加注解

每个一个小的框架会单独建一个包,其实是模仿别人写 xutils早期的第三方框架 viewIoc http dao 图片加载 思考自己怎么去实现。源码  xutils 和 ButterKnife

3.xutils 源码阅读和使用

// handlerType --> class  获取setContentView()方法
Method setContentViewMethod = handlerType.getMethod("setContentView", int.class);
// 反射执行该方法
setContentViewMethod.invoke(activity, viewId);
View view = finder.findViewById(viewInject.value(), viewInject.parentId());
if (view != null) {
  // 可以操作所有修饰
field.setAccessible(true);
// 反射注入属性
field.set(handler, view);
}

动态代理设计模式不详细介绍,插件开发 Hook技术 再去详细讲解 

属性注入 : 利用反射去 获取Annotation --> value --> findViewById --> 反射注入属性

事件注入 :利用反射去 获取Annotation --> value --> findViewById --> setOnclickListener --> 动态代理反射执行方法

4.ButterKnife 源码阅读和使用

@Retention(CLASS) @Target(FIELD)
public @interface Bind {
 /** View ID to which the field will be bound. */
 int[] value();
}

@Retention(CLASS) 编译时的注解

流程  

1.编译的时候ButterKnifeProcessor 生成 .java --> class文件

2.运行是viewBinder.bind(finder, target, source);

相比较而言 butterKnife可能更加高效 有一个好用的插件 个人推荐butterKnife

4.自己动手

自己实现会增加在开发过程中的一些常用功能,网络注解。读源码:1.使用的时候出了问题,2.想自己去实现,3.我想实现类似的功能。自己实现的方式跟xutils类似。

5.最后扩展

网络检测的问题,下周六开始写Android Studio插件。

给TA打赏
共{{data.count}}人
人已打赏
经验分享

集五福,过福年!(附集福宝)

2021-2-1 10:54:27

经验分享

Intelij IDEA配置Tomcat时找不到 “Application Server”也找不到Tomcat Sever

2021-2-22 19:25:58

版权声明 1 本网站名称:怀特博客
2 本站永久网址:https://www.ylesb.com
3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长QQ466534434进行删除处理。
4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
阿里云WordPress

Optimized by WPJAM Basic