Sobes.tech
Middle+

როგორ შევიტანოთ ViewModel Dagger Hilt-ის გამოყენებით?

sobes.tech AI

პასუხი AI-სგან

@HiltViewModel ඇතුළත් කිරීම සහ @ActivityRetainedScoped හෝ @ViewModelScoped යන ඇතුළත් කිරීම් සමඟ ViewModel එකට සහ එවැනි ViewModel හෝ ක්‍රියාකාරකම සමඟ ජීවිත කාලය ගතවන ආශ්‍රිතතා සඳහා භාවිතා වේ. ආශ්‍රිතතා @Inject සමඟ නිර්මාණකරු මඟින් ආදානය කරයි.

// ViewModel නිර්වචනය
@HiltViewModel
class MyViewModel @Inject constructor(
    private val myRepository: MyRepository // නිර්මාණකරු මඟින් ආදානය
) : ViewModel() {
    // ViewModel තර්කය
}
// ආශ්‍රිතතා (Repository) ප්‍රකාශනය
@ActivityRetainedScoped // උදාහරණ සීමාව
class MyRepository @Inject constructor() {
    // රිපොසිටරිය තර්කය
}

Activity හෝ Fragment එකක, ViewModel එක viewModels() හෝ activityViewModels() delegate මඟින් ලබා ගනී:

// Activity එකේ
@AndroidEntryPoint // Hilt-අංග සඳහා ඇතුළත් කිරීම
class MyActivity : AppCompatActivity() {

    private val viewModel: MyViewModel by viewModels() // delegate මඟින් ViewModel ලබා ගැනීම

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // viewModel භාවිතා කිරීම
    }
}
// Fragment එකේ
@AndroidEntryPoint // Hilt-අංග සඳහා ඇතුළත් කිරීම
class MyFragment : Fragment() {

    private val viewModel: MyViewModel by viewModels() // මෙම fragment සඳහා ViewModel ලබා ගැනීම
    // හෝ
    // private val activityViewModel: MyViewModel by activityViewModels() // ක්‍රියාකාරකම සමඟ සම්බන්ධ ViewModel ලබා ගැනීම

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        // viewModel භාවිතා කිරීම
    }
}

MyRepository සඳහා අවශ්‍ය ආශ්‍රිතතා (උදාහරණයක් ලෙස, MyRepository ලබා දීම සඳහා modules) Hilt modules තුළ සැකසිය යුතුය.

// Hilt module එකේ උදාහරණයක්
@Module
@InstallIn(SingletonComponent::class) // SingletonComponent තුළ module ස්ථාපිත කිරීම
object RepositoryModule {

    @Provides
    @Singleton // singleton scope උදාහරණයක්
    fun provideMyRepository(): MyRepository {
        return MyRepository() // MyRepository උදාහරණය ලබා දීම
    }
}