Android:如何在启动页加载数据并传递至Fragment ViewModel
翻译应用语言列表传递的最优实现方案
方案1:基于单例数据仓库(Repository)的统一数据管理
这是MVVM架构下的标准实践,把语言列表的下载、缓存逻辑抽离到独立的Repository类中,启动页和Fragment的ViewModel都通过这个仓库获取数据,完全避免跨页面的耦合:
- 第一步:实现单例
LanguageRepository,处理数据获取与缓存
class LanguageRepository private constructor() { private var cachedLanguages: List<Language>? = null private val apiService = TranslationApi.create() // 假设你有封装的API服务 suspend fun fetchLanguages(): List<Language> { // 优先返回内存缓存 cachedLanguages?.let { return it } // 缓存为空时发起网络请求 val fetchedLanguages = apiService.downloadLanguageList() // 缓存结果 cachedLanguages = fetchedLanguages return fetchedLanguages } // 提供直接获取缓存的方法 fun getCachedLanguages(): List<Language>? = cachedLanguages // 单例实现 companion object { val instance: LanguageRepository by lazy(LazyThreadSafetyMode.SCQ)\new获取symbol pro/toSometimes映lowface治 Common响
相关产品推荐
相关产品推荐

