当前位置: 首页 > news >正文

电商网站开发语言用心做的网站

电商网站开发语言,用心做的网站,doaction wordpress,电子签名在线生成器文章目录 依赖注入DaggerHiltKoin添加依赖项Hilt常用注解的含义HiltAndroidAppAndroidEntryPointInjectModuleInstallInProvidesEntryPoint Hilt组件生命周期和作用域如何使用 Hilt 进行依赖注入 依赖注入 依赖注入是一种软件设计模式#xff0c;它允许客户端从外部源获取其依… 文章目录 依赖注入DaggerHiltKoin添加依赖项Hilt常用注解的含义HiltAndroidAppAndroidEntryPointInjectModuleInstallInProvidesEntryPoint Hilt组件生命周期和作用域如何使用 Hilt 进行依赖注入 依赖注入 依赖注入是一种软件设计模式它允许客户端从外部源获取其依赖项而不是自己创建它们。它是一种用于在对象及其依赖项之间实现控制反转 (IoC) 的技术。 在安卓开发中依赖注入Dependency Injection简称DI是一种设计模式用于解耦组件之间的依赖关系。它的基本思想是将对象的依赖关系从代码中移除而是通过外部容器来管理和注入这些依赖。 传统的方式是在类内部直接创建和管理依赖对象这样容易导致代码的耦合性增加难以进行单元测试和代码重用。而依赖注入通过将依赖的创建和管理交给外部容器使得类只关注自身的逻辑而不需要关心依赖对象的创建和维护。 Dagger Dagger是一个Java和Android平台上的依赖注入框架由Google开发和维护。它的目标是简化管理对象之间的依赖关系提高代码的可测试性、可扩展性和可维护性。 Dagger基于Java的注解处理器和反射机制通过在编译时生成依赖注入代码而不是在运行时进行反射。这种方式具有更好的性能和类型安全性并且可以在编译时检测到一些错误提供更好的开发体验。 Dagger是匕首的意思依赖注入就好像是把匕首直接插入了需要注入的地方直击要害。 Hilt Hilt是刀把的意思它把匕首最锋利的地方隐藏了起来因为如果你用不好匕首的话反而可能会误伤自己。Hilt给你提供了一个安稳的把手确保你可以安全简单地使用。 Android团队在Jetpack中增加了HiltHilt是基于Dagger的一个高级封装旨在简化在Android应用中使用Dagger进行依赖注入的过程。Hilt提供了一套注解和工具使得使用Dagger更加便捷和易于理解并且提供了一些默认的配置以减少开发者的配置工作量。并且得到了 Android Studio 的支持。 Hilt做的优化包括: 无需编写大量的Component代码Scope也会与Component自动绑定预定义绑定例如Application和Activity预定义的限定符例如ApplicationContext和ActivityContext 类似于Room等jetpack利用注解功能简化了很多复杂的程序。 Hilt的核心思想仍然是依赖注入它遵循了Dagger的注入原理和组件机制。Hilt的组件体系与Dagger类似包括ApplicationComponent、ActivityComponent、FragmentComponent等每个组件都有自己的生命周期和作用域。开发者可以使用Hilt的注解来标记和配置这些组件以及在需要注入依赖的地方使用相应的注解 Koin Koin - a smart Kotlin injection library to keep you focused on your app, not on your tools Koin是为Kotlin开发者提供的一个实用型轻量级依赖注入框架采用纯 Kotlin 语言编写而成仅使用功能解析无代理、无代码生成、无反射。 Hilt、Dagger、Koin等等都是依赖注入库Google也在努力不断的完善依赖注入库从Dagger到Dagger2在到现在的Hilt因为依赖注入是面向对象设计中最好的架构模式之一使用依赖注入库有以下优点: 依赖注入库会自动释放不再使用的对象减少资源的过度使用。在配置scopes范围内可重用依赖项和创建的实例提高代码的可重用性减少了很多模板代码。代码变得更具可读性。易于构建对象。编写低耦合代码更容易测试。 添加依赖项 首先将 hilt-android-gradle-plugin 插件添加到项目的根级 build.gradle 文件中 buildscript {...dependencies {...classpath com.google.dagger:hilt-android-gradle-plugin:2.28-alpha} }然后应用 Gradle 插件并在 app/build.gradle 文件中添加以下依赖项 ... apply plugin: kotlin-kapt apply plugin: dagger.hilt.android.pluginandroid {... }dependencies {implementation com.google.dagger:hilt-android:2.28-alphakapt com.google.dagger:hilt-android-compiler:2.28-alpha }Hilt常用注解的含义 Hilt常用注解包含HiltAndroidApp、AndroidEntryPoint、Inject、Module、InstallIn、Provides、EntryPoint等等。 HiltAndroidApp 所有使用Hilt的App必须包含一个使用HiltAndroidApp注解的Application。它会替代Dagger中的AppComponent。HiltAndroidApp注解将会触发Hilt代码的生成作为应用程序依赖项容器的基类。生成的Hilt组件依附于Application的生命周期它也是App的父组件提供其他组件访问的依赖。在Application中设置好HiltAndroidApp之后就可以使用Hilt提供的组件了组件包含Application、Activity、Fragment、View、Service、BroadcastReceiver 等等。 AndroidEntryPoint Hilt提供的AndroidEntryPoint注解用于提供Android类的依赖Activity、Fragment、View、Service、BroadcastReceiver。 Activity:仅仅支持ComponentActivity的子类例如FragmentActivity、AppCompatActivity等等。Fragment:仅仅支持继承androidx.Fragment的FragmentViewServiceBroadcastReceiver 如果您使用AndroidEntryPoint为某个Android类添加注释则还必须为依赖于该类的Android类添加注释。例如如果您为某个Fragment添加注释则还必须为使用该Fragment的所有Activity添加注释。 Inject Hilt需要知道如何从相应的组件中提供必要依赖的实例。使用Inject注解来告诉Hilt如何提供该类的实例它常用于构造函数、非私有字段、方法中。 注意在构建时Hilt为Android类生成Dagger组件。然后Dagger遍历您的代码并执行以下步骤 构建并验证依赖关系确保没有未满足的依赖关系。生成它在运行时用于创建实际对象及其依赖项的类。 AndroidEntryPoint class ExampleActivity : AppCompatActivity() {Inject lateinit var analytics: AnalyticsAdapter... }注意由Hilt注入的字段不能为私有字段。尝试使用Hilt注入私有字段会导致编译错误。 Module 有时类型不能通过构造函数注入。发生这种情况可能有多种原因。例如您不能通过构造函数注入接口。此外您也不能通过构造函数注入不归您所有的类型如来自外部库的类。在这些情况下您可以使用Hilt模块向Hilt提供绑定信息。 Hilt模块是一个带有Module注释的类。与Dagger 模块一样它会告知Hilt如何提供某些类型的实例。与Dagger 模块不同的是您必须使用InstallIn为Hilt模块添加注释以告知Hilt每个模块将用在或安装在哪个Android类中。 常用于创建依赖类的对象(例如第三方库 OkHttp、Retrofit等等)使用Module注解的类需要使用InstallIn注解指定module的范围。 Module InstallIn(ApplicationComponent::class) // 这里使用了 ApplicationComponent因此 NetworkModule 绑定到 Application 的生命周期。 object NetworkModule { }InstallIn 使用Module注入的类需要使用InstallIn注解指定module的范围例如使用 InstallIn(ActivityComponent::class) 注解的module会绑定到activity的生命周期上。 Hilt提供了以下组件来绑定依赖与对应的Android类的活动范围。 Hilt 提供的组件对应的 Android 类的活动范围ApplicationComponentApplicationActivityRetainedComponentViewModelActivityComponentActivityFragmentComponentFragmentViewComponentViewViewWithFragmentComponentView annotated with WithFragmentBindingsServiceComponentService 注意Hilt没有为broadcast receivers提供组件因为Hilt直接从ApplicationComponent注入broadcast receivers。 Provides 它常用于被Module注解标记类的内部的方法并提供依赖项对象。 Module InstallIn(ApplicationComponent::class) // 这里使用了 ApplicationComponent因此 NetworkModule 绑定到 Application 的生命周期。 object NetworkModule {/*** Provides 常用于被 Module 注解标记类的内部的方法并提供依赖项对象。* Singleton 提供单例*/ProvidesSingletonfun provideOkHttpClient(): OkHttpClient {return OkHttpClient.Builder().build()} }EntryPoint Hilt支持最常见的Android类Application、Activity、Fragment、View、Service、BroadcastReceiver等等但是您可能需要在Hilt不支持的类中执行依赖注入在这种情况下可以使用EntryPoint注解进行创建Hilt会提供相应的依赖。 Hilt组件生命周期和作用域 如何使用 Hilt 进行依赖注入 我们先来看一个简单的例子注入HiltSimple并在Application中调用它的方法。 class HiltSimple Inject constructor() {fun test1() {Log.e(TAG, 已经创建成功 )} }HiltAndroidApp class HiltApplication : Application() {Injectlateinit var mHiltSimple: HiltSimpleoverride fun onCreate() {super.onCreate()mHiltSimple.doSomething()} }Hilt需要知道如何从相应的组件中提供必要依赖的实例。使用Inject注解来告诉Hilt如何提供该类的实例Inject常用于构造函数、非私有字段、方法中。 可参考Jetpack新成员一篇文章带你玩转Hilt和依赖注入
http://www.yutouwan.com/news/361345/

相关文章:

  • 青岛科技街网站建设佛山招收网站设计
  • 万能小偷程序做网站深圳台历制作
  • 专业云南做网站网站屏蔽中国ip
  • 用flex做的网站网站营运费
  • 无为建设局网站移动端网站开发环境
  • 网站开发持续更新建e网室内
  • 怎么样看网站用什么程序做的南通优化网站收费标准
  • 英文网站建设需要准备什么如何做好网站建设
  • wordpress 搜索模板网站优化模板
  • vue可以做pc的网站wordpress菜单文本
  • 佛山网站建设技术外包珠海市住房和城乡建设部网站
  • 网站竞价难做优化北京网络公司的网站
  • 列表怎么做网站佛山市房产信息网
  • 怎样优化手机网站程序员用什么软件
  • 广州网站设计成功柚米科技开发公司装饰装修合同范本简单
  • 昆山科技网站建设软件开发者简称
  • 古香古色网站模板开一家互联网公司需要多少钱
  • 网站设计基本原则网站设计文献
  • 科技公司网站开发有的网站为什么打不开怎么回事
  • 哪些做直播卖食品的网站找客网怎么样
  • 如何做充值网站wordpress restfulapi
  • 做ui的网站有哪些青岛建站模板厂家
  • 做网站用哪个软件写比较好网上做预算有哪些网站
  • 莱州网络建站网站中加入百度地图
  • 做网站设计需要学什么flask做网站
  • 企业做网站公司哪家好大连网站建设招聘网
  • 去年做啥网站能致富电子商务网站开发与设计报告
  • 网站如何做浮窗东莞网站设计建设公司
  • 网站毕设给个网址兄弟
  • 网站维护怎么样哪个网站兼职做设计比较好