হিল্টে অন্যান্য জেটপ্যাক লাইব্রেরি থেকে ক্লাস প্রদানের জন্য এক্সটেনশন অন্তর্ভুক্ত। হিল্ট বর্তমানে নিম্নলিখিত জেটপ্যাক উপাদানগুলিকে সমর্থন করে:
-
ViewModel
- নেভিগেশন
- রচনা করুন
- ওয়ার্ক ম্যানেজার
এই একীকরণের সুবিধা নিতে আপনাকে অবশ্যই হিল্ট নির্ভরতা যোগ করতে হবে। নির্ভরতা যোগ করার বিষয়ে আরও তথ্যের জন্য, হিল্টের সাথে নির্ভরতা ইনজেকশন দেখুন।
হিল্ট দিয়ে ভিউমডেল অবজেক্ট ইনজেক্ট করুন
@HiltViewModel
এর সাথে টীকা দিয়ে এবং ViewModel
অবজেক্টের কনস্ট্রাক্টরে @Inject
টীকা ব্যবহার করে একটি ViewModel
প্রদান করুন।
কোটলিন
@HiltViewModel class ExampleViewModel @Inject constructor( private val savedStateHandle: SavedStateHandle, private val repository: ExampleRepository ) : ViewModel() { ... }
জাভা
@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; } ... }
তারপর, @AndroidEntryPoint
এর সাথে টীকা করা একটি কার্যকলাপ বা একটি খণ্ডটি ViewModelProvider
বা by viewModels()
KTX এক্সটেনশনগুলি ব্যবহার করে স্বাভাবিক হিসাবে ViewModel
উদাহরণ পেতে পারে:
কোটলিন
@AndroidEntryPoint class ExampleActivity : AppCompatActivity() { private val exampleViewModel: ExampleViewModel by viewModels() ... }
জাভা
@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
সমস্ত Hilt ViewModels ViewModelComponent
দ্বারা সরবরাহ করা হয় যা একটি ViewModel
মতো একই জীবনচক্র অনুসরণ করে, এবং যেমন, কনফিগারেশন পরিবর্তনগুলি থেকে বাঁচতে পারে। একটি ViewModel
উপর নির্ভরতা বাড়াতে @ViewModelScoped
টীকা ব্যবহার করুন।
একটি @ViewModelScoped
প্রকার এটি তৈরি করবে যাতে ViewModel
এ ইনজেকশন করা সমস্ত নির্ভরতা জুড়ে স্কোপড টাইপের একটি একক উদাহরণ প্রদান করা হয়। একটি ViewModel এর অন্যান্য উদাহরণ যা স্কোপড উদাহরণের জন্য অনুরোধ করে একটি ভিন্ন উদাহরণ পাবে।
যদি একটি একক দৃষ্টান্ত বিভিন্ন ভিউমডেল জুড়ে ভাগ করা প্রয়োজন, তাহলে এটি @ActivityRetainedScoped
বা @Singleton
ব্যবহার করে স্কোপ করা উচিত।
জেটপ্যাক নেভিগেশন লাইব্রেরির সাথে ইন্টিগ্রেশন
আপনার Gradle ফাইলে নিম্নলিখিত অতিরিক্ত নির্ভরতা যোগ করুন:
app/build.gradle
গ্রোভি
dependencies { ... implementation 'androidx.hilt:hilt-navigation-fragment:1.0.0' }
কোটলিন
dependencies { ... implementation("androidx.hilt:hilt-navigation-fragment:1.0.0") }
যদি আপনার ViewModel
নেভিগেশন গ্রাফে স্কোপ করা হয়, তাহলে hiltNavGraphViewModels
ফাংশনটি ব্যবহার করুন যা @AndroidEntryPoint
এর সাথে টীকাযুক্ত টুকরাগুলির সাথে কাজ করে।
কোটলিন
val viewModel: ExampleViewModel by hiltNavGraphViewModels(R.id.my_graph)
জাভা
NavBackStackEntry backStackEntry = navController.getBackStackEntry(R.id.my_graph); ExampleViewModel exampleViewModel = new ViewModelProvider( backStackEntry, HiltViewModelFactory.create(context, backStackEntry) ).get(ExampleViewModel.class)
জেটপ্যাক কম্পোজের সাথে ইন্টিগ্রেশন
হিল্ট কীভাবে জেটপ্যাক কম্পোজের সাথে একীভূত হয় তা দেখতে, কম্পোজ এবং অন্যান্য লাইব্রেরির হিল্ট বিভাগটি দেখুন।
হিল্ট দিয়ে ওয়ার্ক ম্যানেজার ইনজেক্ট করুন
আপনার Gradle ফাইলে নিম্নলিখিত অতিরিক্ত নির্ভরতা যোগ করুন। মনে রাখবেন যে লাইব্রেরি ছাড়াও, আপনাকে একটি অতিরিক্ত টীকা প্রসেসর অন্তর্ভুক্ত করতে হবে যা হিল্ট টীকা প্রসেসরের উপরে কাজ করে:
app/build.gradle
গ্রোভি
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' }
কোটলিন
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") }
ক্লাসে @HiltWorker
টীকা ব্যবহার করে একজন Worker
ইনজেক্ট করুন এবং Worker
অবজেক্টের কনস্ট্রাক্টরে @AssistedInject
ব্যবহার করুন। আপনি Worker
অবজেক্টে শুধুমাত্র @Singleton
বা unscoped bindings ব্যবহার করতে পারেন। আপনাকে অবশ্যই @Assisted
এর সাথে Context
এবং WorkerParameters
নির্ভরতা টীকা করতে হবে:
কোটলিন
@HiltWorker class ExampleWorker @AssistedInject constructor( @Assisted appContext: Context, @Assisted workerParams: WorkerParameters, workerDependency: WorkerDependency ) : Worker(appContext, workerParams) { ... }
জাভা
@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; } ... }
তারপর, আপনার Application
ক্লাসকে Configuration.Provider
ইন্টারফেস প্রয়োগ করতে বলুন, HiltWorkFactory
এর একটি উদাহরণ ইনজেক্ট করুন এবং এটিকে নিম্নরূপ WorkManager
কনফিগারেশনে পাস করুন:
কোটলিন
@HiltAndroidApp class ExampleApplication : Application(), Configuration.Provider { @Inject lateinit var workerFactory: HiltWorkerFactory override fun getWorkManagerConfiguration() = Configuration.Builder() .setWorkerFactory(workerFactory) .build() }
জাভা
@HiltAndroidApp public class ExampleApplication extends Application implements Configuration.Provider { @Inject HiltWorkerFactory workerFactory; @Override public Configuration getWorkManagerConfiguration() { return new Configuration.Builder() .setWorkerFactory(workerFactory) .build(); } }