日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NSkyKit 项目实践-Dagger2

發(fā)布時間:2025/6/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NSkyKit 项目实践-Dagger2 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

kotlin中配置Dagger2

  • 在app模塊的build.gradle文件中進行如下配置,
//daggerapi "com.google.dagger:dagger:$dagger_version"annotationProcessor "com.google.dagger:dagger-compiler:$dagger_version"api "com.google.dagger:dagger-android:$dagger_version"api "com.google.dagger:dagger-android-support:$dagger_version"annotationProcessor "com.google.dagger:dagger-android-processor:$dagger_version" 復(fù)制代碼
  • 相關(guān)常用注解:
@Inject @Component @Module @Provides @Qualifier和@Named @Scope和@Singleton 復(fù)制代碼

@Inject

@Inject注解只是JSR-330中定義的注解,在javax.inject包中。 這個注解本身并沒有作用,它需要依賴于注入框架才具有意義,可以用來標記構(gòu)造函數(shù)、屬性和方法。

標記構(gòu)造函數(shù) 被標記的構(gòu)造函數(shù)可以有0個或多個依賴作為參數(shù)。 同一個類中最多只可以標記一個構(gòu)造函數(shù)。

class People @Inject constructor(val name:String = "Tom") 復(fù)制代碼

注意在kotlin中這種寫法是不被允許的,因為這等價于java中的多個構(gòu)造方法People(String name), People(),正確的寫法應(yīng)該是這樣:

data class People constructor(val name: String) {@Injectconstructor() : this("Tom") } 復(fù)制代碼

標記屬性

被標記的屬性不能是final的,kotlin中不能是val。 被注入進的屬性不能用private修飾(是Dagger2不支持,而非@Inject不支持)

@Injectlateinit var people:People 復(fù)制代碼

標記方法

被標記的方法可以有0個或多個依賴作為參數(shù)。 方法不能是抽象的。

class HomeActivity : AppCompatActivity() {private lateinit var people:People@Injectfun setPeople(people:People){this.people = people} } 復(fù)制代碼

這種方法注入和屬性注入并沒有什么本質(zhì)上的不同,實現(xiàn)效果也基本一樣。還有一種做法是@Inject標記被注入類的某個方法,該方法會在類的構(gòu)造方法之后接著被調(diào)用:

data class People constructor(val name: String) {@Injectconstructor() : this("Tom")init {println("init:$name")}@Injectfun hello(){println("hello:$name")} }class HomeActivity : AppCompatActivity() {@Injectlateinit var people:Peopleoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_home)//執(zhí)行相關(guān)注入操作...println(people.toString())} }復(fù)制代碼

運行結(jié)果是這樣的:

01-02 11:57:30.995 16601-16601/? I/System.out: init:Tom 01-02 11:57:30.995 16601-16601/? I/System.out: hello:Tom 01-02 11:57:30.995 16601-16601/? I/System.out: People(name=Tom) 復(fù)制代碼

項目相關(guān)代碼

application

class SkyApplication:DaggerApplication(){override fun applicationInjector(): AndroidInjector<out DaggerApplication> {return DaggerApplicationComponent.builder().create(this)}override fun onCreate() {super.onCreate()CoreAppExt.onCreate(this, true)}override fun attachBaseContext(base: Context?) {super.attachBaseContext(base)CoreAppExt.attachBaseContext(base)} } 復(fù)制代碼

xxxDaggerActivity

由于只能單繼承,使用dagger時繼承CoreDaggerActivity,CoreDaggerFragment,代碼和 DaggerActivity、CoreDaggerFragment 相同;
不使用時,可以直接繼承CoreActivity,CoreFragment;

abstract class CoreDaggerActivity : CoreActivity(), HasFragmentInjector, HasSupportFragmentInjector {@Injectlateinit var supportFragmentInjector: DispatchingAndroidInjector<Fragment>@Injectlateinit var frameworkFragmentInjector: DispatchingAndroidInjector<android.app.Fragment>override fun onCreate(savedInstanceState: Bundle?) {AndroidInjection.inject(this)super.onCreate(savedInstanceState)}override fun supportFragmentInjector(): AndroidInjector<Fragment>? {return supportFragmentInjector}override fun fragmentInjector(): AndroidInjector<android.app.Fragment>? {return frameworkFragmentInjector} } 復(fù)制代碼abstract class CoreDaggerFragment<T : ViewDataBinding> : CoreFragment<T>(), HasSupportFragmentInjector {@Injectlateinit var childFragmentInjector: DispatchingAndroidInjector<Fragment>override fun onAttach(context: Context?) {AndroidSupportInjection.inject(this)super.onAttach(context)}override fun supportFragmentInjector(): AndroidInjector<Fragment>? {return childFragmentInjector} } 復(fù)制代碼

ApplicationComponent

@Singleton @Component(modules = [AndroidSupportInjectionModule::class,ActivityModule::class,SupportFragmentModule::class,MainDaggerModule::class,HomeDaggerModule::class] ) interface ApplicationComponent : AndroidInjector<SkyApplication> {@Component.Builderabstract class Builder : AndroidInjector.Builder<SkyApplication>()} 復(fù)制代碼

ActivityModule、SupportFragmentModule

@Module abstract class ActivityModule {@ContributesAndroidInjectorabstract fun contributeMainActivity(): MainActivity }/*** SupportFragment Dagger2 Module*/ @Module abstract class SupportFragmentModule {@ContributesAndroidInjectorabstract fun contributeCatalogFragment(): HomeFragment@ContributesAndroidInjectorabstract fun contributeDiscoverFragment(): DiscoverFragment@ContributesAndroidInjectorabstract fun contributeSettingFragment(): SettingFragment} 復(fù)制代碼

MainActivity

class MainActivity : CoreDaggerActivity(), BottomNavigationView.OnNavigationItemSelectedListener {@Injectlateinit var mMainViewModel: MainViewModelvar mDataBingding: ActivityMainBinding? = nullprivate var mAdapter: CoreFragmentPagerAdapter? = nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)mDataBingding = bindingContentView(R.layout.activity_main)setUpNavigation()setUpViewPager()NSkyLog.d(TAG, "MainViewModel ${mMainViewModel.doSomething()}")}復(fù)制代碼

結(jié)果信息

2019-02-18 18:32:27.279 20743-20768/? I/com.nsky.app_LOGGER: ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────── 2019-02-18 18:32:27.280 20743-20768/? I/com.nsky.app_LOGGER: │ Thread: pool-1-thread-1 2019-02-18 18:32:27.280 20743-20768/? I/com.nsky.app_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 2019-02-18 18:32:27.280 20743-20768/? I/com.nsky.app_LOGGER: │ NSkyLog.i (NSkyLog.java:82) 2019-02-18 18:32:27.280 20743-20768/? I/com.nsky.app_LOGGER: │ NSkyLog$DefaultLogDelegate.i (NSkyLog.java:48) 2019-02-18 18:32:27.280 20743-20768/? I/com.nsky.app_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 2019-02-18 18:32:27.280 20743-20768/? I/com.nsky.app_LOGGER: │ CoreAppExt:onCreate 2019-02-18 18:32:27.280 20743-20768/? I/com.nsky.app_LOGGER: └──────────────────────────────────────────────────────────────────────────────────────────────────────────────── 2019-02-18 18:32:27.451 20743-20743/? D/com.nsky.app_LOGGER: ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────── 2019-02-18 18:32:27.452 20743-20743/? D/com.nsky.app_LOGGER: │ Thread: main 2019-02-18 18:32:27.452 20743-20743/? D/com.nsky.app_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 2019-02-18 18:32:27.452 20743-20743/? D/com.nsky.app_LOGGER: │ NSkyLog.d (NSkyLog.java:88) 2019-02-18 18:32:27.452 20743-20743/? D/com.nsky.app_LOGGER: │ NSkyLog$DefaultLogDelegate.d (NSkyLog.java:53) 2019-02-18 18:32:27.452 20743-20743/? D/com.nsky.app_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 2019-02-18 18:32:27.452 20743-20743/? D/com.nsky.app_LOGGER: │ MainActivity:MainViewModel This is MainViewModel 2019-02-18 18:32:27.452 20743-20743/? D/com.nsky.app_LOGGER: └────────────────────────────────────────────────────────────────────────────────────────────────────────────────復(fù)制代碼

項目地址: NSkyKit

轉(zhuǎn)載于:https://juejin.im/post/5c5163126fb9a049cb19298d

總結(jié)

以上是生活随笔為你收集整理的NSkyKit 项目实践-Dagger2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男人看片网站 | 人人干天天干 | 国产人伦精品一区二区三区 | 免费a大片| 1级片在线观看 | 国产一区自拍视频 | 久久a视频 | 国产美女91呻吟求 | 91精品国产综合久久久蜜臀粉嫩 | 中文字幕超碰在线 | 99r热| 四虎精品成人免费网站 | 可以在线观看的av网站 | 欧美 日韩 国产 中文 | 日本亚洲最大的色成网站www | 日韩免费视频一区二区 | 色中色在线视频 | 精品二区视频 | 欧美人与性动交α欧美片 | 成人福利影院 | 一区二区三区免费毛片 | 粉嫩小箩莉奶水四溅在线观看 | 国产美女又黄又爽又色视频免费 | av巨作 | 国产成人无遮挡在线视频 | 国产综合精品一区二区三区 | 亚洲国产三区 | 色综合久久久久无码专区 | 男生操女生在线观看 | 正在播放超嫩在线播放 | 国产亚洲精品自拍 | 蜜臀一区二区三区精品免费视频 | 国产伦人伦偷精品视频 | 蜜桃aaa| 中文字幕黑丝 | 欧美色图19p | 中文字幕欧美人妻精品 | 亚洲人成无码网站久久99热国产 | 中文字幕在线观看免费 | 午夜资源网| 国产激情啪啪 | 少妇人妻一区二区 | 国产高潮av | 波多野结衣一区二区三区在线观看 | 成人免费在线观看网站 | 奇米影视888 | 狠狠干影视 | 色呦呦麻豆 | 精品人妻无码一区二区 | 亚洲精品a | 狼色网 | 亚洲国产传媒 | 午夜精品久久99蜜桃的功能介绍 | 天天做天天爱天天爽 | 精品成在人线av无码免费看 | 免费啪啪小视频 | 蜜臀一区 | 黄网站色| 国产精品v欧美精品v日韩精品 | 国产老熟妇精品观看 | 9191在线视频| 国产一区视频在线观看免费 | 一本色道久久综合亚洲精品图片 | 精品一区李梓熙捆绑 | 国产一区二区在线视频观看 | 欧美成人手机在线视频 | 久久1024 | 色爱色| 四月婷婷 | 最近中文字幕在线视频 | 五月天婷婷在线观看 | 成人欧美一区二区三区黑人 | 欧美日韩美女 | 懂色一区二区二区av免费观看 | 国产电影一区二区三区 | 四虎黄色网址 | 99网站| 亚洲精品在线观看视频 | 天堂综合网久久 | 99欧美精品 | 亚洲草逼视频 | 泷泽萝拉在线播放 | 中文字幕亚洲激情 | 久久美女视频 | 亚洲一本在线 | 夜夜操狠狠干 | 亚洲国产v| 91久久久久久久 | 围产精品久久久久久久 | 特级西西人体444www | 中文字幕偷拍 | 国产美女永久免费 | 国产女主播福利 | 中文字幕在线观看视频一区二区 | 在线观看网站黄 | www,超碰 | 国产精品一区二区6 | 超碰人人国产 | 婷婷国产视频 |