首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Phoenix的Android之旅

    Dagger2 Android应用:@Scope和@Subcomponent

    Dagger2使用中的核心技巧包括@Subcomponent和@Scope,这两个注解对架构的层次关系有非常重要的作用。 这时候就需要结合@Subcomponent 来一起理解这两个东西了。 来拆分层级 在不使用@Subcomponent的情况下修改之前的代码 我们回到之前CoffeeMachine的例子。 在定义了Subcomponent之后,它是怎么跟Parent Compoenent联系起来的呢? 这里扯个题外话,在Dagger1的时候,并没有@Subcomponent注解,它是用depenencies来表明Subcomponent的。

    1.1K20发布于 2018-08-07
  • 来自专栏包子的书架

    dagger2的学习

    interface Builder { // SubComponent 必须显式地声明 Subcomponent.Builder,parent Component 需要用 Builder 来创建 SubComponent SonComponent build(); } } @SubComponent的写法与@Component一样,只能标注接口或抽象类,与依赖关系一样, SubComponent 与 parent Component 的 Scope 不能相同,只是 SubComponent 表明它是继承扩展某 Component 的。 只需要在 parent Component 依赖的 Module 中的subcomponents加上 SubComponent 的 class,然后就可以在 parent Component 中请求 SubComponent.Builder 的 class;(2)在 parent Component 中提供返回 SubComponent.Builder 的接口用以创建 SubComponent 7、@BindsInstance的使用

    86610发布于 2020-06-16
  • 来自专栏埋名

    React的Refs方法获取DOM实例 和 访问子组件方法及属性

    使用子组件 通过import SubComponent from '. /SubComponent'来引用子组件SubComponent,在 render方法中注册使用组件 render(){ return( <SubComponent/> ) } 绑定ref属性 在子组件调用上面绑定一个值为subcomponents的属性ref,subcomponents <SubComponent ref="subcomponents" /> 调用子组件方法 在入口父组件App.js中,添加方法handleClick,去调用子组件SubComponent.js中的subHandleClick方法 handleClick(){ //this.refs.subcomponents import React, { Component } from 'react'; export default class SubComponent extends Component { constructor

    5.7K50发布于 2018-10-18
  • 来自专栏FreeSWITCH中文社区

    Dagger2 使用总结(二)

    Component接口的复用 Hello world ---- 我们可以适当地复用Component接口,从而使逻辑更加简洁且减少不必要的重复工作,复用一般使用dependencies或者@Subcomponent 的方法 } 实现SubComponent ? @Subcomponent (modules = FruitModule.class) //这里的@Subcomponent表示这是一个SubComponent接口 public interface 而使用@SubComponent不需要暴露类,而需要直接提供一个获取SubComponent的方法。 @SubComponent适用于父Component中公共注入类较多且不用隐藏的场景。

    50610发布于 2020-12-21
  • 来自专栏android技术

    Android--Dagger2入门

    可以使用,Subcomponent又可以被添加到Component中 2.1 定义新的作用域:SubScope @Scope @Retention(AnnotationRetention.SOURCE) 注解定义子组件,并指定作用域为SubScope @SubScope @Subcomponent interface SubComponent { } 2.4 在子组件中使用@Subcomponent.Factory 注解,定义获取该组件的接口 同时在子组件中提供注入方法,这边我新建了一个SubActivity @SubScope @Subcomponent interface SubComponent { @Subcomponent.Factory interface Factory { fun create(): SubComponent } fun inject (activity: SubActivity) } 2.5 提供给组件一个子组件module 在Moudle注解中,指定使用哪个子组件 @Module(subcomponents = [SubComponent

    97911编辑于 2021-12-06
  • 来自专栏haifeiWu与他朋友们的专栏

    Dagger Android支持库(译文)

    首先编写实现AndroidInjector 的@Subcomponent,并使用扩展AndroidInjector.Builder 的@ Subcomponent.Builder: @Subcomponent Component(modules = {..., YourActivityModule.class}) interface YourApplicationComponent {} 专业提示:如果你的 subcomponent @ActivityScope @ContributesAndroidInjector(modules = { /* modules to install into the subcomponent */ 以相同的方式定义 subcomponent,将 Activity 类型参数替换为 Fragment,将 @ActivityKey 替换为 @FragmentKey,将 HasActivityInjector 所有每个子类需要做的是绑定相应的 @Subcomponent。 如果您没有复杂的类层次结构,Dagger提供了一些基本类型,例如DaggerActivity和 DaggerFragment。

    1.3K30发布于 2018-09-11
  • 来自专栏Nodejs技术栈

    记一次京东 Node.js 直出服务的性能优化

    ">

    this is SubComponent1{{param.name}}</> </SubComponent1> <SubComponent2 inline-template :param="data.sub2">

    this is SubComponent2{{param.name}}</> </SubComponent2> <SubComponent3 inline-template :param="data.sub3">

    this is SubComponent3{{param.name}}</> </SubComponent3 },inlineTemplate:{render:function(){with(this){return _c('p',[_v("this is SubComponent2"+_s(param.name function anonymous() { with(this){return _c('ParentComponent', [ __SubComponent1_replace__, __SubComponent2

    1.4K11发布于 2019-11-06
  • 来自专栏一尾流莺学前端

    【架构师(第二十六篇)】编辑器开发之属性编辑同步渲染

    /defaultProps'; // 属性转化成表单 哪个属性使用哪个类型的组件去编辑 export interface PropsToForm { component: string; subComponent afterTransform: (e: number) => e.toString(), }, textAlign: { component: 'a-radio-group', subComponent afterTransform: (e: any) => e.target.value, }, fontFamily: { component: 'a-select', subComponent 使用的组件 export const mapPropsToForms: PropsToForms = { fontFamily: { component: 'a-select', subComponent component"> <template v-if="item.options"> <component :is="item.<em>subComponent</em>" v-for

    51540编辑于 2022-12-10
  • 来自专栏WecTeam

    记一次Node.js直出服务的性能优化

    ">

    this is SubComponent1{{param.name}}</> </SubComponent1> <SubComponent2 inline-template :param="data.sub2">

    this is SubComponent2{{param.name}}</> </SubComponent2> <SubComponent3 inline-template :param="data.sub3">

    this is SubComponent3{{param.name}}</> </SubComponent3 },inlineTemplate:{render:function(){with(this){return _c('p',[_v("this is SubComponent2"+_s(param.name function anonymous() { with(this){return _c('ParentComponent', [ __SubComponent1_replace__, __SubComponent2

    67620发布于 2019-12-24
  • 来自专栏Jungle笔记

    逆袭成为主管和高级经理!——组合模式

    ){ printf("-----Dean Office:%s\n", name.c_str()); } private: string name; }; 3.3.容器构件 //容器构件SubComponent class SubComponent :public Component { public: SubComponent(string iName){ this->name = iName; *office1, *office2, *office3, *office4, *office5, *office6, *office7, *office8; head = new SubComponent ("总部"); sichuanBranch = new SubComponent("四川分部"); office1 = new AdminOffice("行政办公室"); office2 = new DeanOffice("教务办公室"); cdBranch = new SubComponent("成都分部"); myBranch = new SubComponent("绵阳分部

    45810编辑于 2022-07-24
  • 来自专栏Ryan Miao

    Dagger2 入门解析

    SubComponent 事实上,到这里dagger的用法对于服务端来说已经足够了。通过module的连接特性可以定义IoC容器范围,再结合dropwizard,就和springboot一样了。 然而,毕竟dagger2是为了Android而打造的,为了适应其复杂的继承体系和生命周期的限制,dagger提供了SubComponent模型。也就是子组件。 对于Subcomponent的作用,大概有两点: 1)继承扩展功能并绑定生命周期,2)封装。 继承体现在subcomponent可以使用parent的module,共享其生命周期。 封装则是因为但其他人都不可以使用subcomponent的依赖,只能使用subcomponent本身。也就是parent里的Component不能调用subcomponent里的module。 暂时没能理解subcomponent和scope的使用,感觉有些复杂。

    1.8K120发布于 2018-03-14
  • 来自专栏Android常用基础

    Dagger2-从入门到精通(下)

    ---- 注解 @Qualifier: 要作用是用来区分不同对象实例 @Named 其实是@Qualifier的一种实现 Scope Subcomponent Lazy与Provider @Qualifier clipboardd.png ---- @Subcomponent 作用有些类似Component中的dependencies作用。 特点: Subcomponent同时具备两种不同生命周期的scope, SubComponent具备了父Component拥有的Scope,也具备了自己的Scope。 SubComponent的Scope范围小于父Component 我们用代码使用体会下: FComponent //第一步 @Module public class FModule { @Singleton ; } } //第二步 @Singleton @Component(modules = FModule.class) public interface FComponent { //需要将SubComponent

    2.4K21发布于 2018-09-11
  • 来自专栏一尾流莺学前端

    【架构师(第二十五篇)】编辑器开发之属性编辑区域表单渲染

    : { [key: string]: any }; text: string; // 支持组件包裹 subComponent? initalTransform: (v: string) => parseFloat(v), }, textAlign: { component: 'a-radio-group', subComponent value: 'right', text: '右', }, ], }, fontFamily: { component: 'a-select', subComponent -- 判断有没有包裹子组件 --> <template v-if="item.options"> <component :is="item.<em>subComponent</em>

    95210编辑于 2022-12-10
  • 来自专栏木溪知识加油站

    笔记(二十二)——Dagger2使用

    @Subcomponent是复用组件,我们想复用组件时,可以使用它,下面是父组件使用方法。另一种是注解属性添加dependencies。 --->子类:给UserComponent添加UserModule依赖 @Subcomponent(modules = { UserModule.class }) public interface

    84310发布于 2019-08-25
  • 来自专栏哈利迪ei

    Android | dagger细枝篇

    @Subcomponent Subcomponent即子组件,可以将父组件的能力继承过来,同时扩展自己的能力。 现在已经有了@Component的CarGraph来造车,我们可以建一个@Subcomponent的WheelGraph来造轮胎,(虽是轮胎图纸,但也有造车之心) @Subcomponent //子组件 ,轮胎图纸 public interface WheelGraph { Wheel makeWheel(); //造轮胎 @Subcomponent.Factory //告知CarGraph create(); //造轮胎 Wheel wheel = wheelGraph.makeWheel(); 然后我们看下子组件是如何使用父组件的能力的,在WheelGraph里添加一个inject, @Subcomponent 表示我想要一个Activity级别的作用域 } 使用, @ActivityScope //使用自定义注解 public class Wheel { } @ActivityScope //使用自定义注解 @Subcomponent

    1K10发布于 2020-09-03
  • 来自专栏Android群英传

    快刀斩乱码—— Dagger2没有想象的那么难

    @SubComponent:如果我们需要父组件全部的提供对象,这时我们可以用包含方式而不是用依赖方式,相比于依赖方式,包含方式不需要父组件显式显露对象,就可以拿到父组件全部对象。 且SubComponent只需要在父Component接口中声明就可以了。 包含方式——这里就用到了我们@SubComponent注解,用@SubComponent标记接口或者抽象类,表示它可以被包含。 //包含SubComponent ActSubComponent getActSubComponent(); 上面的ActSubComponent 是被包含,它需要有个@Subcomponent 然后我们在Activity内部的Fragment可以拿到对应的这个SubComponent。 ?

    1.4K20发布于 2018-07-20
  • 来自专栏WebJ2EE

    【Hooks】:[组]When to use React.useCallback()

    onHandleClick = useCallback(() => { const special = calculatePi(); }); return ( <SubComponent handleClick={onHandleClick} /> ); } In this example, each time the <SubComponent

    54410发布于 2021-02-26
  • 来自专栏Android-薛之涛

    Andriod-Dagger2

    是自定义注解用的,可以替代@Named ** @Singleton和@Scope **Singleton其实是继承@Scope注解的 ** @Scope和@Qulifier一样,需要我们自定义注解才能使用 Subcomponent 4.4 Subcomponent 从注解关键字可以看出Subcomponent和Component是上下级关系,@Subcomponent注解的功能和Dependencies类似,但是使用方法有点不同, 我们通过代码来看一下,首先定义一个@Subcomponent注解的子组件SubMainComponent : @PhotoMudule.CustomeScope //单例 @Subcomponent(modules 总结一下@Subcomponent的使用: 子组件的声明方式由@Component改为@Subcomponent 在父组件中要声明一个返回值为子组件的方法,当子组件需要什么Module时,就在该方法中添加该类型的参数 注意:用@Subcomponent注解声明的Component是无法单独使用的,想要获取该Component实例必须经过其父组件 4.5 Lazy与Provider Lazy和Provider都是用于包装

    2.7K10发布于 2019-08-18
  • 来自专栏Android学习之路

    Dagger2使用攻略-基础部分

    的作用是引用 Module 的,下面 @Module 会继续说 dependencies 的作用是 引用其他 Component 使用的,相当于 把其他的 Component 当作组件一样引用过来; @SubComponent Dagger2 不会生成 Dagger开头的 DaggerSubComponent 这种类,所以,SubComponent 需要在 Component 注册和维护。 @ActivityScoped @Subcomponent(modules = MainModule.class) public interface MainComponent { void SecondActivity: onCreate: dbmanager-singleton->64826129 总结 : Dagger2 实现单例要 @Singleton 和 @Component || @SubComponent ; SecondComponent plus(SecondModule module); DBManager getDBManager(); } @ActivityScoped @Subcomponent

    2.1K40发布于 2018-10-10
  • 来自专栏Android补给站

    Android Hilt实战初体验: Dagger替换成Hilt

    com.google.dagger:hilt-android-compiler:2.28-alpha" } Application类 使用Dagger时,需要一个AppComponent单例组件,项目中的其它SubComponent Android类 对于Android类,使用Dagger时需要定义SubComponent并将它依赖到Application类中。下面以WelcomeActivity为例。 @Subcomponent(modules = [WelcomeModule::class]) interface WelcomeComponent { @Subcomponent.Factory

    2.4K20发布于 2020-07-21
领券