栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Hilt部分笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Hilt部分笔记

1.@HiltAndroidApp注解Application为其生成一个应用级别的component

2.@AndroidEntryPoint注解会生成独立的component,可以接收自己和父层级提供的依赖

如果一个类依赖了@AndroidEntryPoint注解的类,该类也必须要用此注解

3.@Inject注解构造方法告诉Hilt如何提供该类的实例

4.每次Hilt需要提供实例时,都会执行提供依赖项函数,默认每次都会重新创建一个实例

5.@InstallIn 指的是绑定可使用范围。例如@InstallIn(ActivityComponent.class)表示该Module中的绑定可以在ActivityComponent及其以下的层级使用。注意跟@Scoped的区别

6.Hilt根据对应Android 类的生命周期自动创建或者销毁生成的component实例

7.ActivityRetainedComponent不会在 configuration change 的时候销毁,所以是在Activty第一次onCreate和最后一次onDestroy的时候创建和销毁

8.@Scoped指的是绑定共享范围。例如通过@ActivityScoped注解绑定类或者绑定函数,表示该绑定在某个ActivityComponent的生命周期里只创建一次,本层级及以下层级共享同一个绑定

        对于采用构造函数提供依赖的方式,在该类上方使用注解指定作用域

        对于采用Module @Provides或者@Binds提供依赖的方式,在提供函数上注解指定作用域

9.默认情况下,所有的绑定是没有作用域限制的。

绑定的作用域必须要与安装到的组件的作用域一致。如果是采用注解绑定类的方式,则应该使用依赖该类的最高层级Component对应的作用域。

10.可以通过@ApplicationContext Context context或者Application application两种方式获取

Application context

11.可以通过@EntryPoint为@AndroidEntryPoint不支持的类将其作为依赖提供出去,例如

public class ExampleContentProvider extends ContentProvider {
  @EntryPoint
  @InstallIn(SingletonComponent.class)
  interface ExampleContentProviderEntryPoint {
    public AnalyticsService analyticsService();
  }
  ...
}
  @EntryPoint
  @InstallIn(SingletonComponent.class)
  interface ExampleContentProviderEntryPoint {
    public AnalyticsService analyticsService();
  }
  ...
}

然后通过
  EntryPointAccessors.fromApplication(appContext, ExampleContentProviderEntryPoint.class);      AnalyticsService analyticsService = hiltEntryPoint.analyticsService();

使用该接口

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/340288.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号