Umhlahlandlela Ophelele Wokujova Kokuxhomekeka Nge-Hilt ku-Android

  • I-Hilt yenza i-Dagger ibe lula ngokuhlinzeka ngeziqukathi ezizenzakalelayo ezihambisana nomjikelezo wokuphila we-Android.
  • Ivumela ukuhlukanisa ikhodi ngokusebenzisa i-constructor injection, amamojula ane-@Provides kanye ne-@Binds.
  • Lawula ububanzi bezimo usebenzisa izingxenye ezithile ezifana ne-SingletonComponent noma i-ActivityComponent.
  • Kwenza kube lula ukuthuthukiswa kwezakhiwo ezikwazi ukukalwa nezihlolwayo, ikakhulukazi ezindaweni ezine-Jetpack Compose kanye ne-MVVM.

I-Hilt Android

Uma uthuthukisa izinhlelo zokusebenza ze-Android, kungenzeka ukuthi uke wahlangabezana nesidingo sokuhlela kangcono amakilasi akho ukuze uvimbele iphrojekthi ukuthi ingabi yisiphithiphithi esiphelele. Yilapho kungena khona i-dependency injection , iphethini yokuklama, yize ekuqaleni ingase ibonakale njengomlingo omnyama, empeleni iyindlela yokunikeza ikilasi ngalinye izinto elizidingayo ngaphandle kokuthi ikilasi lizidale lona ngokwalo.

UHilt ufika ezosisindisa ebunzimeni beDagger, enikeza ungqimba oluphezulu olulinganisa ukufakwa kokuxhomekeka . Ngokuhlanganisa neJetpack, uHilt uphatha ngokuzenzakalelayo izitsha kanye nemijikelezo yokuphila, okusivumela ukuthi sigxile ku-logic yebhizinisi esikhundleni sokuhambisa izinto sengathi sithutha indlu.

Ukucushwa Kwemvelo Kwasekuqaleni

Ukuze uqale nge-Hilt, isinyathelo sokuqala ukulungiselela indawo ye-Gradle. Kubalulekile ukwengeza i- hilt-android-gradle-plugin kufayela lakho lokucushwa kweleveli yephrojekthi. Bese, kufayela lemojuli yohlelo lwakho lokusebenza, udinga ukusebenzisa i-plugin bese wengeza ukuncika okuhambisanayo, uqinisekise ukuthi i-compiler (kungakhathaliseki ukuthi isebenzisa i-kapt noma i-KSP) ilungiselelwe kahle.

Into ebalulekile ukuthi, ukuze konke kusebenze kahle, iphrojekthi kumele ihlelwe ukuze isebenzise i-Java 17 (noma i-Java 8 yezinguqulo ezindala), njengoba lokhu kuyimfuneko yokuthi i-Hilt ne -Jetpack Compose zisebenze ndawonye ngaphandle kokuphazamiseka. Uma uqaphela ukuthi uhlelo aluhlanganisi lapho usebenzisa i-plugin, hlola kabili ukuthi izinguqulo ze-Kotlin ne-KSP ziyafana ncamashi, ngoba ngisho nokungafani okuncane kungaphula yonke inqubo yokuhlanganisa.

Inhliziyo kaHilt: Ikilasi Lokufaka Isicelo

Noma yiluphi uhlelo lokusebenza olufuna ukuzuza kulo mtapo wolwazi kumele lube neklasi le-Application elenziwe ngokwezifiso. Ukulidala nje akwanele; kumele limakwe ngesichasiselo se- @HiltAndroidApp . Lo mugqa uqalisa ukukhiqizwa kwekhodi kaHilt futhi udala isitsha sempande yohlelo lokusebenza.

Umongo ku-Android
I-athikili ehlobene:
Umhlahlandlela Ophelele Wokuqukethwe ku-Android: Kuyini nokuthi Ungakuphatha Kanjani

Le ngxenye esezingeni eliphezulu ibalulekile ngoba ixhumeka kumjikelezo wokuphila wohlelo lokusebenza futhi isebenza njengesisekelo sazo zonke ezinye izingxenye ukufinyelela ukuncika okuchazwe kuleli zinga. Vele, ungakhohlwa ukubhalisa leli klasi kufayela le-AndroidManifest.xml usebenzisa isici segama, noma i-Hilt ngeke ibonwe nhlobo.

Ukufaka Ukuxhomekeka Kuzingxenye ze-Android

Uma uhlelo lokusebenza selulungile, singaqala ukufaka ukuncika emisebenzini, izingcezu, ukubuka, noma izinsizakalo. Ukuze senze lokhu, sisebenzisa isichasiselo se- @AndroidEntryPoint . Lokhu kutshela uHilt ukuthi leli klasi liyindawo yokungena nokuthi kufanele likhiqize ingxenye ethile yalo.

Uma sifuna ukuthola ukuncika okuthile ngaphakathi komsebenzi, sisebenzisa i-field injection nge-@Inject annotation. Kubaluleke kakhulu ukukhumbula ukuthi lezi zinsimu azikwazi ukuba zangasese ; uma uzama ukusebenzisa i-private modifier, i-compiler izophonsa iphutha ngaphandle kokungabaza. Endabeni ye-Jetpack Compose, ukumane ubhale amanothi ku-root Activity kusenza sikwazi ukufinyelela i-ViewModels ngqo ngaphakathi kwemisebenzi ye-composable.

Amasu Okuchaza Ukuxhumana

I-Hilt idinga ukwazi ukuthi ingazidala kanjani izinto esizicelayo. Indlela eqondile kakhulu i -constructor injection , lapho sibeka khona i-`@Inject` phambi kwe-class constructor. Lokhu kuvumela i-Hilt ukuthi ihlaziye amapharamitha futhi inqume ukuthi ingakunikeza kanjani lokho kuncika ngakunye.

Kodwa-ke, kunezimo lapho singenalo khona ukulawula okuphelele ekilasini, njengalapho kusetshenziswa amalabhulali angaphandle njenge-Retrofit noma i-OkHttpClient. Yilapho ama-Hilt Modules engena khona . I-module iyikilasi elichazwe nge-@Module futhi kumele ifake i-@InstallIn ukuze icacise ukuthi iyiphi ingxenye okufanele ifake lokho kuncika.

  • Ukusetshenziswa kwe-@Provides: Lokhu kusetshenziswa uma ikilasi liyiqembu lesithathu noma lidinga iphethini yokwakha eyinkimbinkimbi. Lapha sichaza umsebenzi obuyisela isibonelo esidingekayo.
  • Ukusebenzisa i-@Binds: Lena inketho ekahle uma sifuna ukuxhumanisa isikhombimsebenzisi nokusetshenziswa okuqondile. Ichazwa njengomsebenzi ongaqondakali otshela uHilt ukuthi: "uma othile ecela lesi sikhombimsebenzisi, mnike lokhu kusetshenziswa."

Ububanzi kanye nokuphathwa komjikelezo wokuphila

Ngokuzenzakalelayo, i-Hilt idala i-instance entsha isikhathi ngasinye lapho kucelwa ukuncika. Kodwa-ke, ngezinye izikhathi sidinga into ukuthi ihlale ifana kuyo yonke impilo yohlelo lokusebenza noma isikrini. Kulokhu, sisebenzisa ama-component scopes.

Uma simaka ikilasi nge- @Singleton bese silifaka ku-SingletonComponent, sizoba nesibonelo esisodwa somhlaba wonke. Uma sikhetha ukuthi into ikhona kuphela isikhathi somsebenzi, sisebenzisa i-@ActivityScoped ngaphakathi kwe-ActivityComponent. Kubalulekile ukungasebenzisi ngokweqile ama-scope, njengoba ukugcina izinto kwimemori isikhathi eside kungathinta kabi ukusebenza kohlelo lokusebenza.

Amacala Akhethekile kanye Neziqu

Ngezinye izikhathi sidinga ukufaka ukuqaliswa okubili okuhlukile kwesixhumi esifanayo. Ukuze sigweme ukucindezela i-compiler, sisebenzisa ama-qualifier . I-qualifier empeleni iyisichasiselo esenziwe ngokwezifiso esisetshenziselwa ukulebula ukubopha okuthile, okusivumela ukuthi sihlukanise, isibonelo, phakathi kweklayenti le-HTTP lokuqinisekisa kanye nelinye lezicelo ezijwayelekile.

mvm
I-athikili ehlobene:
I-MVVM: Iphethini Yokwakha Isofthiwe Ephezulu Yezinhlelo Zokusebenza Zesimanje

Ngaphezu kwalokho, i-Hilt yenza izinto zibe lula ngezichasiso ezichazwe ngaphambilini njenge- @ApplicationContext kanye ne-@ActivityContext, okusivumela ukuthi sithole umongo we-Android ngaphandle kokuhlela amamojula ngesandla. Okokugcina, ngezigaba i-Hilt engawasekeli ngokwemvelo (njenge-ContentProviders), singasebenzisa isichasiso se-@EntryPoint , sidale ibhuloho elenziwe ngesandla ukuze sikhiphe ukuncika kugrafu ye-Hilt. Yabelana ngalolu lwazi ukuze abasebenzisi abaningi bafunde ngalo.


Engeza njengomthombo okhethwayo ku-Google