0°

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插件。

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论
阿里云WordPress

Optimized by WPJAM Basic