赞
踩
}
##### []( )管理和注册方法设置
codeInsertToClassName : (必须)字符串,类名(完整类名),通过编译时生成代码的方式将收集到的类注册到此类的codeInsertToMethodName方法中
codeInsertToMethodName: 字符串,方法名,注册代码将插入到此方法中。若未指定,则默认为static块,(方法名为:)
registerClassName: 无
registerMethodName : (必须)字符串,方法名,静态方法,方法的参数为 scanInterface
参数分为两组:**codeInsertToClassName** / **codeInsertToMethodName** 和 **registerMethodName** / **registerClassName**。 1. 第一组是管理类和管理方法:对应到示例中是 CategoryManager#initCategory 2. 第二组是注册类和注册方法:对应到示例中是 CategoryManager#register 示例中没有明确指定registerClassName,会默认赋值initClassName,也就是 **codeInsertToClassName**。所以,框架的设置中允许把管理类和注册类分开来写的。
// 代码有删减
void convertConfig() {
registerInfo.each { map ->
RegisterInfo info = new RegisterInfo()
info.initClassName = map.get('codeInsertToClassName') //代码注入的类
info.initMethodName = map.get('codeInsertToMethodName') //代码注入的方法(默认为static块)
info.registerMethodName = map.get('registerMethodName') //生成的代码所调用的方法
info.registerClassName = map.get('registerClassName') //注册方法所在的类
info.init()
}
}
void init() {
if (!registerClassName) {
registerClassName = initClassName
}
}
> 注释:从示例中可以看出 **codeInsertToMethodName** 和 **registerMethodName** 需要保持一致,同时为静态方法或者同时非静态方法;如果没有指定**codeInsertToMethodName**,默认是静态代码块,视为静态方法,此时 **registerMethodName** 需指定静态方法。
> 对于四个参数的解释,参考框架中的实现类,略有修改。从下面的代码可以看出,AutoRegister的主要作用是从不同的模块收集子类和实现类(CategoryA/CategoryB),生成注册函数(register)调用代码,插入到初始化入口函数 **initCategory()** 或 **static** 代码块。在此基础上,APP初始化时只需要调用 **initCategory()** 或者自动执行 **static** 代码块,就可以做到添加一系列实例对象到初始化列表(CATEGORIES)中,完成注册工作。
// codeInsertToClassName | registerClassName
public class CategoryManager {
private static final HashMap<String, ICategory> CATEGORIES = new HashMap<>(); // 不指定 codeInsertToMethodName 时生效 static { register(new CategoryA()); //scanInterface的实现类 register(new CategoryB()); //scanSuperClass的子类 } // codeInsertToMethodName public static void initCategory() { register(new CategoryA()); //scanInterface的实现类 register(new CategoryB()); //scanSuperClass的子类 } // registerMethodName static void register(ICategory category) { if (category != null) { CATEGORIES.put(category.getName(), category); } } public static Set<String> getCategoryNames() { return CATEGORIES.keySet(); }
}
ory) {
if (category != null) {
CATEGORIES.put(category.getName(), category);
}
}
public static Set<String> getCategoryNames() {
return CATEGORIES.keySet();
}
}
[]( )最后 ================================================================== 按照国际惯例,给大家分享一套十分好用的Android进阶资料:《全网最全Android开发笔记》。 整个笔记一共**8大模块、729个知识点,3382页,66万字**,可以说覆盖了当下Android开发最前沿的技术点,和阿里、腾讯、字节等等大厂面试看重的技术。 ![图片](https://img-blog.csdnimg.cn/img_convert/0872bfe8f5701c0431f61d6b374a94c0.png) ![图片](https://img-blog.csdnimg.cn/img_convert/7f38838cd46c04d10069aab323c5c930.png) 因为所包含的内容足够多,所以,这份笔记不仅仅可以用来当学习资料,还可以当工具书用。 如果你需要了解某个知识点,不管是Shift+F 搜索,还是按目录进行检索,都能用最快的速度找到你要的内容。 相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照整个知识体系编排的。 ### []( )(一)架构师必备Java基础 1、深入理解Java泛型 2、注解深入浅出 3、并发编程 4、数据传输与序列化 5、Java虚拟机原理 6、高效IO …… ![图片](https://img-blog.csdnimg.cn/img_convert/dae4ccad9bbebe5d74113c515bd0e4aa.png) ### []( )(二)设计思想解读开源框架 1、热修复设计 2、插件化框架设计 3、组件化框架设计 4、图片加载框架 5、网络访问框架设计 6、RXJava响应式编程框架设计 …… ![图片](https://img-blog.csdnimg.cn/img_convert/624d8479d0f24bc734ca832987b4dab7.png) ### []( )(三)360°全方位性能优化 1、设计思想与代码质量优化 2、程序性能优化 * 启动速度与执行效率优化 * 布局检测与优化 * 内存优化 * 耗电优化 * 网络传输与数据储存优化 * APK大小优化 3、开发效率优化 * 分布式版本控制系统Git * 自动化构建系统Gradle …… **自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。** **深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!** **因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。** ![img](https://img-blog.csdnimg.cn/img_convert/c5640974d6a2d1d2cbc0beff45438830.png) ![img](https://img-blog.csdnimg.cn/img_convert/d8df6ac5bd68ccaeef8d754342805868.png) ![img](https://img-blog.csdnimg.cn/img_convert/ace3652e1e7060d3f9fe5f4afa77423a.png) ![img](https://img-blog.csdnimg.cn/img_convert/4047f25bc37291ce0504004291dc385f.png) ![img](https://img-blog.csdnimg.cn/img_convert/b7ce0274da340f44abb1d372a90f8f61.png) ![img](https://img-blog.csdnimg.cn/img_convert/022bb1fc0eabdb7cb775978eea13c096.png) ![img](https://img-blog.csdnimg.cn/13f2cb2e05a14868a3f0fd6ac81d625c.png) **既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!** **由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新** **如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)** ![img](https://img-blog.csdnimg.cn/img_convert/0af3e47b213bc26443dc2436f310cb96.png) ## 分享读者 > 作者2013年java转到Android开发,在小厂待过,也去过华为,OPPO等大厂待过,18年四月份进了阿里一直到现在。 > 被人面试过,也面试过很多人。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长,而且极易碰到天花板技术停滞不前! 我们整理了一份阿里P7级别的Android架构师全套学习资料,特别适合有3-5年以上经验的小伙伴深入学习提升。 主要包括腾讯,以及字节跳动,阿里,华为,小米,等一线互联网公司主流架构技术。 ![腾讯T3架构师学习专题资料](https://img-blog.csdnimg.cn/img_convert/4a8a65c8a1aeee5d90cddb45455c6c54.webp?x-oss-process=image/format,png) **如果你觉得自己学习效率低,缺乏正确的指导,可以一起学习交流!** 我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。 35岁中年危机大多是因为被短期的利益牵着走,过早压榨掉了价值,如果能一开始就树立一个正确的长远的职业规划。35岁后的你只会比周围的人更值钱。 > **本文已被[CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》]( )收录** [**一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!**](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0) **AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算** 源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》]( )收录** [**一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!**](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0) **AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算**
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。