Hilt, diğer Jetpack kitaplıklarındaki dersleri vermeye yönelik uzantılar içerir. Hilt, şu anda aşağıdaki Jetpack bileşenlerini desteklemektedir:
ViewModel- Navigasyon
- Oluştur
- WorkManager
Bu entegrasyonlardan yararlanmak için Hilt bağımlılıklarını eklemeniz gerekir. Örneğin, bağımlılık ekleme hakkında daha fazla bilgi için Hilt.
Hilt ile ViewModel nesnelerini ekleme
Not ekleyerek bir ViewModel sağlayın
@HiltViewModel ile ve ViewModel içinde @Inject ek açıklamasını kullanarak
nesnesinin kurucusu.
Kotlin
@HiltViewModel class ExampleViewModel @Inject constructor( private val savedStateHandle: SavedStateHandle, private val repository: ExampleRepository ) : ViewModel() { ... }
Java
@HiltViewModel public class ExampleViewModel extends ViewModel { private final ExampleRepository repository; private final SavedStateHandle savedStateHandle; @Inject ExampleViewModel( SavedStateHandle savedStateHandle, ExampleRepository repository) { this.savedStateHandle = savedStateHandle; this.repository = repository; } ... }
Böylece, @AndroidEntryPoint ek açıklaması olan bir etkinlik veya parça
ViewModel örneğini ViewModelProvider veya
by viewModels() KTX uzantıları:
Kotlin
@AndroidEntryPoint class ExampleActivity : AppCompatActivity() { private val exampleViewModel: ExampleViewModel by viewModels() ... }
Java
@AndroidEntryPoint public class ExampleActivity extends AppCompatActivity { private ExampleViewModel exampleViewModel; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); exampleViewModel = new ViewModelProvider(this).get(ExampleViewModel.class); } ... }
@ViewModelScoped
Tüm Hilt ViewModelleri, aşağıdakini izleyen ViewModelComponent tarafından sağlanır:
ViewModel ile aynı yaşam döngüsü vardır ve dolayısıyla yapılandırma değişikliklerine dayanabilir.
Bir ViewModel bağımlılığının kapsamını belirlemek için @ViewModelScoped ek açıklamasını kullanın.
@ViewModelScoped türü, kapsama alınan tek bir örneğinin bunu
type, ViewModel öğesine eklenen tüm bağımlılıklarda sağlanır.
Kapsamlı örneği isteyen diğer ViewModel örnekleri alır
görebilirsiniz.
Tek bir örneğin çeşitli ViewModel'ler arasında paylaşılması gerekiyorsa bu örnek,
@ActivityRetainedScoped veya @Singleton kullanılarak kapsama alınmalıdır.
Jetpack navigasyon kitaplığıyla entegrasyon
Gradle dosyanıza şu ek bağımlılıkları ekleyin:
app/build.gradle
Eski
dependencies { ... implementation 'androidx.hilt:hilt-navigation-fragment:1.0.0' }
Kotlin
dependencies { ... implementation("androidx.hilt:hilt-navigation-fragment:1.0.0") }
ViewModel metriğiniz gezinme kapsamında ise
grafik,
aşağıdaki parçalarla çalışan hiltNavGraphViewModels işlevini kullanın:
@AndroidEntryPoint ile notlandırıldı.
Kotlin
val viewModel: ExampleViewModel by hiltNavGraphViewModels(R.id.my_graph)
Java
NavBackStackEntry backStackEntry = navController.getBackStackEntry(R.id.my_graph); ExampleViewModel exampleViewModel = new ViewModelProvider( backStackEntry, HiltViewModelFactory.create(context, backStackEntry) ).get(ExampleViewModel.class)
Jetpack Compose ile entegrasyon
Hilt'in Jetpack Compose ile nasıl entegre olduğunu görmek için Oluşturma ve diğer kitaplıklar.
WorkManager'ı Hilt ile ekleme
Gradle dosyanıza aşağıdaki ek bağımlılıkları ekleyin. Not: ek açıklama işlemcisi eklemeniz gerekir. ek açıklama işlemcisinin üstünde çalışan bir kod snippet'i ekleyin:
app/build.gradle
Eski
dependencies { ... implementation 'androidx.hilt:hilt-work:1.0.0' // When using Kotlin. kapt 'androidx.hilt:hilt-compiler:1.0.0' // When using Java. annotationProcessor 'androidx.hilt:hilt-compiler:1.0.0' }
Kotlin
dependencies { implementation("androidx.hilt:hilt-work:1.0.0") // When using Kotlin. kapt("androidx.hilt:hilt-compiler:1.0.0") // When using Java. annotationProcessor("androidx.hilt:hilt-compiler:1.0.0") }
Şunu kullanarak bir Worker ekleyin:
Sınıfta @HiltWorker ve Worker kategorisinde @AssistedInject ek açıklama
nesnesinin kurucusu. Şu öğede yalnızca @Singleton veya kapsamı belirlenmemiş bağlamaları kullanabilirsiniz:
Worker nesne. Context ve WorkerParameters için de ek açıklama sağlamanız gerekir
@Assisted içeren bağımlılıklar:
Kotlin
@HiltWorker class ExampleWorker @AssistedInject constructor( @Assisted appContext: Context, @Assisted workerParams: WorkerParameters, workerDependency: WorkerDependency ) : Worker(appContext, workerParams) { ... }
Java
@HiltWorker public class ExampleWorker extends Worker { private final WorkerDependency workerDependency; @AssistedInject ExampleWorker( @Assisted @NonNull Context context, @Assisted @NonNull WorkerParameters params, WorkerDependency workerDependency ) { super(context, params); this.workerDependency = workerDependency; } ... }
Ardından, Application sınıfınızı oluşturun.
Configuration.Provider arayüzünü uygulayın,
HiltWorkFactory ve aşağıdaki gibi WorkManager yapılandırmasına aktarın:
Kotlin
@HiltAndroidApp class ExampleApplication : Application(), Configuration.Provider { @Inject lateinit var workerFactory: HiltWorkerFactory override fun getWorkManagerConfiguration() = Configuration.Builder() .setWorkerFactory(workerFactory) .build() }
Java
@HiltAndroidApp public class ExampleApplication extends Application implements Configuration.Provider { @Inject HiltWorkerFactory workerFactory; @Override public Configuration getWorkManagerConfiguration() { return new Configuration.Builder() .setWorkerFactory(workerFactory) .build(); } }