You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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响
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 21:23:28