分享好友 最新动态首页 最新动态分类 切换频道
Dagger2入门系列二:Module&Component源码分析,阿里蚂蚁金服五面
2024-12-26 20:25

@Component(modules = Test1Module.class)

public interface Test1Component {

void inject(Test1Activity activity);

}

1.4、Activity类


public class Test1Activity extends AppCompatActivity {

@Inject

Student student;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_test1);

ButterKnife.bind(this);

initDatas();

}

private void initDatas() {

DaggerTest1Component.builder()

// .test1Module(new Test1Module(this))

.build()

.inject(this);

}

@OnClick(R.id.btn1)

public void onViewClicked() {

Toast.makeText(this, student.toString(), Toast.LENGTH_SHORT).show();

}

}

2、源码解析

======

打开目录结构

我们不难发现,编译器已经帮我们生成了这样几个文件

  • Student_Factory

  • DaggerTest1Component

  • Test1Activity_MembersInjector

  • Test1Activity_ViewBinding(不用管,butterknife

我们一一进行分析

2.1、Student_Factory


上一篇文章我们已经进行了分析,很简单,当我们@Inject注解一个类的构造方法时,编译器会自动帮我们生成一个工厂类,负责生产该类的对象类似于商品的厂家

package com.gs.dagtest1.bean;

import dagger.internal.Factory;

public final class Student_Factory implements Factory {

private static final Student_Factory INSTANCE = new Student_Factory();

@Override

public Student get() {

return provideInstance();

}

public static Student provideInstance() {

return new Student();

}

public static Student_Factory create() {

return INSTANCE;

}

public static Student newStudent() {

return new Student();

}

}

2.2、DaggerTest1Component


public final class DaggerTest1Component implements Test1Component {

private DaggerTest1Component(Builder builder) {}

public static Builder builder() {

return new Builder();

}

public static Test1Component create() {

return new Builder().build();

}

@Override

public void inject(Test1Activity activity) {

injectTest1Activity(activity);

}

private Test1Activity injectTest1Activity(Test1Activity instance) {

Test1Activity_MembersInjector.injectStudent(instance, new Student());

return instance;

}

public static final class Builder {

private Builder() {}

public Test1Component build() {

return new DaggerTest1Component(this);

}

@Deprecated

public Builder test1Module(Test1Module test1Module) {

Preconditions.checkNotNull(test1Module);

return this;

}

}

}

2.3、Test1Activity_MembersInjector


public final class Test1Activity_MembersInjector implements MembersInjector {

private final Provider studentProvider;

public Test1Activity_MembersInjector(Provider studentProvider) {

this.studentProvider = studentProvider;

}

public static MembersInjector create(Provider studentProvider) {

return new Test1Activity_MembersInjector(studentProvider);

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如何做好面试突击,规划学习方向

面试题集可以帮助你查漏补缺,有方向有针对性的学习,为之后进大厂做准备。但是如果你仅仅是看一遍,而不去学习和深究。那么这份面试题对你的帮助会很有限。最终还是要靠资深技术水平说话。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。建议先制定学习计划,根据学习计划把知识点关联起来,形成一个系统化的知识体系。

学习方向很容易规划,但是如果只通过碎片化的学习,对自己的提升是很慢的。

同时我还搜集整理2020年字节跳动,以及腾讯,阿里,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力,包含知识脉络 + 分支细节

在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

年字节跳动,以及腾讯,阿里,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力,包含知识脉络 + 分支细节

[外链图片转存中…(img-JN39YdwE-1711745469655)]

在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多。

[外链图片转存中…(img-OvAAMA4n-1711745469656)]

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

最新文章
淮南漏电断路器 NXBLE-63/3P C63A 厂家+2025排名一览
淮南漏电断路器 NXBLE-63/3P C63A 厂家+2025排名一览 1. 产品概述 - WSK - S-(TH)智能温湿度控制器是一种能够对环境温湿度进行精确监测和控制的设备。它结合了先进的传感器技术和智能控制算法,用于维持环境温湿度在设定的范围内。2. 功能
超级传单营销系统有什么特色功能! 引流拓客+源码搭建+技术开发,微三云麦超
超级传单营销系统有什么特色功能!引流拓客+源码搭建+技术开发,微三云麦超前文引言:微三云系统底层优势——提供丰富的二次开发接口:微三云市场总监麦超表示,微软有微软的操作系统,苹果有苹果的操作系统,谷歌有安卓操作系统,华为也推
首届中关村AI创新创意设计大赛|环境艺术赛道优秀作品展示(1)
  首届中关村AI创新创意设计大赛-环境艺术赛道参赛作品整体呈现出落地性强、设计深入、细节完整、软件熟练等特点,评审后赛道主办方推选出了优秀作品进行展示,供下一届参赛者交流借鉴。  环境艺术赛道参赛优秀作品  一、参赛作品:
玩家攻略“微信小程序微乐斗地主到底有挂吗”实测开挂方法
玩家攻略“微信小程序微乐斗地主到底有挂吗”实测开挂方法,功能可不止是开透视还能帮助大家修改游戏里的各种数据,需要的咨询我们客服微信11591129绝对防封号  公司推出的手游辅助插件是一款非常实用的专为手游游戏玩家打造的专属辅助工
高清美女写真生成工具评测:用AI一键打造你的AI女友
限时免费,点击体验最近超火的AI生图神器,坐拥3000美女的大男主就是你! https://ai.sohu.com/pc/generate/textToImg?_trans_=030001_yljdaimn 在这个数字化和科技飞速发展的时代,AI绘画工具以其神奇的能力逐渐走入了我们的生活。而在众
韩漫漫画免费阅读看漫画下拉方式为你带来最佳的阅读体验
随着数字时代的发展,越来越多的漫画爱好者选择通过在线平台进行阅读。韩漫,作为一种独特的漫画类型,凭借其精美的画风、丰富的情节和独特的叙事方式,吸引了大量粉丝。而“韩漫漫画免费阅读看漫画下拉”正是现代用户在追求便捷、免费漫画
襄阳市米芾中学:不负好春光 研学促成长
湖北日报客户端讯(通讯员吴怀志)雨过天晴,碧空如洗,春光正好。4月29日清晨,襄阳市米芾中学的全体同学前往襄阳华侨城奇幻谷,开展以“不负好春光,研学促成长”为主题的研学活动。如梦如幻的炼金学院。在研学导师的带领下,同学们来到
安卓摩尼定位纯净版下载
安卓摩尼定位纯净版是一款可以实现虚拟定位的神器,在安卓摩尼定位纯净版中,你无需出门,就能将自己的位置定位到全球各个地方角落,软件不需要root,仅需要打开开发者模式,然后开启【允许模拟位置】即可使用。感兴趣的朋友快来本站下载体
华盟新媒CEO黄博荣获年度AI营销领军人物大奖
2024 年12月12日,TMA 颁奖盛典在广州盛大举行,这场备受瞩目的行业盛会吸引了来自字节跳动、阿里、快手、小红书、网易、微博、蓝色光标等企业高管与行业精英。TMA大奖作为中国移动营销领域最权威奖项,一直以来都备受品牌主们的高度关注。
轻松生成高清美女写真,探索超强AI绘图工具!
限时免费,点击体验最近超火的AI生图神器,坐拥3000美女的大男主就是你! https://ai.sohu.com/pc/generate/textToImg?_trans_=030001_yljdaimn 在这个数字化迅速发展的时代,AI技术如同一股清流,正不断改变我们的生活和工作方式。想象一
相关文章
推荐文章
发表评论
0评