本页面由葡萄牙语机器翻译,可能存在错误。葡萄牙语版本为准。
文件与“偏好设置”
本页面坦诚地说明一次移除。如果你在找 SharedPreferences/UserDefaults,请停下:
在 CrossFly 中这个机制不存在。
⚠️ 轻量持久化已被移除
Settings.appSettings、appSecretKey、refresh() 以及旧的“偏好设置”都不存在了 ——
而且退出时不会自动写入。你要在合适的时机显式写入。
该用什么替代
| 需要存储… | 使用 |
|---|---|
| 标志、主题、上次登录(键→值) | SQLite 中的键/值表(指南) |
| blob / 文件 | Device.homeFolder 中的一个文件 |
SQLite 中的键/值(推荐用于配置)
try (SqliteDb db = SqliteDb.open("app.db")) {
db.exec("CREATE TABLE IF NOT EXISTS kv(k TEXT PRIMARY KEY, v TEXT)");
db.execute("INSERT OR REPLACE INTO kv(k, v) VALUES(?, ?)", "tema", "escuro");
String tema = db.queryString("SELECT v FROM kv WHERE k=?", "tema"); // 若不存在则为 null
}
Device.homeFolder 中的简单文件
Device.homeFolder 是应用的基础目录(因平台而异):
| 平台 | homeFolder |
|---|---|
| 桌面 | 工作目录(cwd) |
| Android | 应用的私有存储 |
| iOS | documents 文件夹 |
String path = Device.homeFolder + "config.json";
byte[] bytes = Utils.readBytes(path); // ⚠️ 若文件不存在则为 null
if (bytes != null) {
String json = new String(bytes);
// … 解析 …
}
// FileHandle (libGDX),用于需要更多控制的情况:
FileHandle fh = Utils.loadFile(path); // 若未找到则为 null
最佳实践
- 在正确的时机显式写入(保存配置时、离开某个屏幕时)—— 没有任何东西会 自动持久化。
- 配置优先选择 SQLite 键值而非零散文件(可事务、可查询)。
- 读取时始终检查
Utils.readBytes/loadFile的null(文件可能不存在)。
常见错误
- 寻找
Settings.appSettings/SharedPreferences—— 已被移除;不会回来。 - 假定关闭时会自动写入 —— 没有;请自己写入。
- 读取不存在的文件时不处理
null。
另见
这个页面有帮助吗?感谢你的反馈!