释放双眼,带上耳机,听听看~!
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插件。



