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

Android DataStore:如何用动态文件名创建并注入fileKey?

解决方案

你之前的问题在于用了固定文件名的Context扩展属性来获取DataStore,没法动态传入每个widget实例的fileKey。要实现每个实例对应独立的DataStore,直接在getDataStore方法里动态创建即可:

override suspend fun getDataStore(
    context: Context,
    fileKey: String
): DataStore<SingleWidgetInfo> {
    // 直接使用传入的fileKey作为DataStore的文件名,搭配对应的序列化器
    return context.dataStore(fileKey, WeatherInfoSerializer)
}

说明

  • 删掉原来那个固定文件名的private val Context.datastore扩展属性,因为它是全局固定的,没法适配不同widget实例的fileKey需求。
  • dataStore函数本身支持动态传入文件名参数,直接在方法内调用它,把fileKey传进去就能为每个widget实例创建独立的DataStore,实现不同实例存储不同状态的需求。

内容的提问来源于stack exchange,提问作者Jscti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:30:06