App Inventor 2 TinyDB实战:让App记住你的每一次操作

1 阅读3分钟

你有没有遇到过这种情况——辛苦在App里配置好的参数、游戏打到的最高分,退出应用再打开,一切归零?这不是Bug,而是App Inventor的天然行为:每次运行都会重新初始化所有变量。想让App真正记住东西,你需要TinyDB微数据库。

基础概念

TinyDB是App Inventor内置的本地持久化组件,采用标签-值模型。每个数据项由一个文本标签和一个值(文本/数字/列表)组成:存的时候按标签存,取的时候按标签取。

生命周期规则

  • 正常退出再打开 → 数据保留
  • App覆盖更新 → 数据保留
  • 卸载App重装 → 数据清空
  • AI伴侣中切项目 → 注意共享(所有项目共用AI伴侣的TinyDB空间)

实战一:存取基本数据

记录用户首次打开App的时间:

存储(在Screen.Initialize中使用):

TinyDB1.保存值 标签 first_launch 值 Clock1.Now()

读取

变量 上次时间 ← TinyDB1.获取值 标签 first_launch 无标签时返回值 首次访问

如果标签不存在,获取值会返回你指定的默认值。

实战二:保存游戏最高分(含列表回存)

存储分数列表比单个值更优雅:

TinyDB1.保存值 标签 all_scores 值 (创建列表 1200 2300 1800)

读取后仍然是一个列表对象,可直接用选择列表项操作。经测试验证,列表存入后再读取,长度和元素顺序都正确。

实战三:多屏幕数据共享

TinyDB可以在同一App的不同屏幕之间共享数据:

Screen1(登录页):

TinyDB1.保存值 标签 logged_in_user 值 小明 打开屏幕 Screen2

Screen2(个人中心):

变量 当前用户 ← TinyDB1.获取值 标签 logged_in_user 无标签时返回值 未登录

不用全局变量、不用传参——跨屏幕共享就这么简单。

常见坑点

坑1:AI伴侣环境数据串飞

所有项目共用AI伴侣的TinyDB。切项目前建议手动清除数据,或给每个项目的标签加唯一前缀。

坑2:TinyDB不能跨App共享

跨应用数据分享需要用CloudDB或自建后端API(通过Web组件)。

坑3:值类型限制

不支持存储组件对象(如按钮、标签)或连接对象,但支持嵌套列表。

坑4:覆盖写入不留历史

重复保存同一标签会覆盖旧值。需要保存操作日志的话,用递增标签保存多条记录。

快速决策树

需要本地持久化? ├─ 仅当前App内用 → TinyDB ├─ 跨App共享 → CloudDB / TinyWebDB ├─ 存大文件 → 文件管理器组件 └─ 结构化数据 → 数据文件组件(CSV/JSON)

发布到应用市场前,记得先清除AI伴侣中的测试数据再打包!


参考文档:App Inventor 2 官方文档 — 数据存储组件(www.fun123.cn/reference/c…