HarmonyOS开发实战:小分享-AppPreferences 实现收藏数据持久化 前言数据持久化是移动应用的基础能力让用户数据在应用重启后不丢失。HarmonyOS 提供了ohos.data.preferences实现轻量级键值存储。本篇讲解如何将收藏数据持久化。详细 API 可参考 HarmonyOS Preferences 官方文档。一、Preferences 基本用法1.1 获取 Preferences 实例import { preferences } from ohos.data.preferences; import { BusinessError } from ohos.base; let dataPreferences: preferences.Preferences | null null; async function getPreferences(context: Context): Promisevoid { try { dataPreferences await preferences.getPreferences(context, favorites_store); } catch (err) { let code (err as BusinessError).code; console.error(Failed to get preferences, code: code); } }1.2 写入数据async function saveFavorites(items: ArrayFavoriteItem): Promisevoid { if (!dataPreferences) return; try { await dataPreferences.put(favorites, JSON.stringify(items)); await dataPreferences.flush(); } catch (err) { console.error(Failed to save favorites, code: (err as BusinessError).code); } }1.3 读取数据async function loadFavorites(): PromiseArrayFavoriteItem { if (!dataPreferences) return []; try { const jsonStr await dataPreferences.get(favorites, []); return JSON.parse(jsonStr) as ArrayFavoriteItem; } catch (err) { console.error(Failed to load favorites, code: (err as BusinessError).code); return []; } }二、在 FavoritesPage 中集成2.1 集成代码Entry Component struct FavoritesPage { State favorites: ArrayFavoriteItem []; async aboutToAppear(): Promisevoid { await getPreferences(this.context); this.favorites await loadFavorites(); } async onFavoriteChanged(): Promisevoid { await saveFavorites(this.favorites); } }三、Preferences API 总结API作用说明getPreferences(context, name)获取实例异步put(key, value)写入支持 string/number/booleanget(key, defaultValue)读取指定默认值delete(key)删除删除指定键flush()持久化写入磁盘clear()清空删除所有键四、本文核心知识点4.1 数据持久化核心要点Preferences 轻量级键值存储put 写入get 读取flush 持久化JSON.stringify/parse 序列化复杂对象4.2 实战开发要点所有操作用 try/catch 包裹写入后调用 flush() 确保落盘复杂对象序列化存储附录Preferences 数据持久化的完整实现细节1. Preferences 完整 APIAPI作用异步getPreferences(context, name)获取实例是put(key, value)写入数据是get(key, defaultValue)读取数据是delete(key)删除键是flush()持久化到磁盘是clear()清空所有数据是on(change, cb)监听变化否2. 完整的使用示例import { preferences } from ohos.data.preferences; import { BusinessError } from ohos.base; async function saveData(context: Context, key: string, value: string): Promisevoid { try { let prefs await preferences.getPreferences(context, my_store); await prefs.put(key, value); await prefs.flush(); } catch (err) { console.error(Save failed: JSON.stringify(err)); } } async function loadData(context: Context, key: string): Promisestring { try { let prefs await preferences.getPreferences(context, my_store); return await prefs.get(key, ); } catch (err) { console.error(Load failed: JSON.stringify(err)); return ; } }3. 序列化复杂对象// 保存对象 async function saveObject(context: Context, key: string, obj: Object): Promisevoid { const json JSON.stringify(obj); await saveData(context, key, json); } // 读取对象 async function loadObjectT(context: Context, key: string): PromiseT | null { const json await loadData(context, key); if (!json) return null; return JSON.parse(json) as T; }4. 与 RDB 对比对比维度PreferencesRDB数据结构键值对关系表查询能力仅 key 查询SQL 查询数据量少量大量复杂度简单复杂适用场景设置、配置历史记录5. 完整代码文件索引文件路径说明pages/FavoritesPage.ets收藏数据持久化common/utils/Storage.ets存储工具类6. 实现要点总结Preferences 核心要点getPreferences获取存储实例put/get读写数据flush()确保数据落盘JSON.stringify/parse序列化复杂对象try/catch异常处理7. 总结本文详细讲解了 HarmonyOS Preferences 数据持久化的完整实现涵盖 API 使用、序列化、异常处理等核心知识点。完整代码索引文件路径说明本文涉及的代码文件见正文核心 API 参考API/组件用途文档链接文中涉及的 API核心功能华为官方文档常见问题Q1: 为什么会出现编译错误A: 检查 import 路径是否正确确认 API 版本兼容性。Q2: 如何调试功能A: 使用 hilog 打印日志检查参数传递是否正确。Q3: 运行时崩溃怎么办A: 使用 try/catch 捕获异常检查权限配置。性能优化建议异步操作使用 async/await 避免阻塞 UI大量数据使用 LazyForEach 懒加载图片资源压缩后再使用缓存网络请求结果及时释放不再使用的资源安全注意事项用户输入必须校验敏感数据不要硬编码网络请求使用 HTTPS文件路径避免注入权限最小化原则扩展阅读HarmonyOS 官方文档提供了更详细的 API 说明开源鸿蒙社区有丰富的示例代码华为开发者论坛可以获取技术支持总结本文详细讲解了小分享 App 中对应功能的完整实现涵盖 API 使用、代码示例、常见问题、性能优化等核心知识点。通过本文的学习读者可以掌握 HarmonyOS 开发的完整流程。本章小结本文详细介绍了小分享 App 中对应功能的完整实现方案。通过本文的学习读者可以掌握以下核心知识点功能的核心 API 使用方法和注意事项完整的代码实现流程和最佳实践常见问题的排查和解决方案性能优化和安全建议掌握这些知识后读者可以独立实现类似功能并应用到自己的 HarmonyOS 应用开发中。练习与思考尝试修改代码中的参数观察对功能的影响思考如何将本功能与其他功能组合使用考虑如何优化代码性能和用户体验探索华为官方文档中更多高级用法实践是掌握技术的最佳途径建议读者在理解代码后自行编写和调试。完整代码文件索引文件路径说明本文涉及的所有代码文件见正文核心 API 参考API/组件用途文档链接本文涉及的核心 API功能实现华为官方文档常见问题排查Q1: 编译错误A: 检查 import 路径是否正确确认 API 版本兼容性查看 hilog 日志。Q2: 运行时异常A: 使用 try/catch 捕获异常检查参数合法性确认权限已配置。Q3: 性能问题A: 避免在主线程执行耗时操作使用异步 API及时释放资源。最佳实践总结代码结构清晰职责单一错误处理完善用户体验良好性能优化到位运行流畅安全防护周全数据可靠文档注释完整易于维护总结本文详细讲解了小分享 App 中对应功能的完整实现。通过本文的学习读者可以掌握 HarmonyOS 开发的核心 API 使用方法和最佳实践并能够独立实现类似功能。敬请期待总结本文详细讲解了小分享 App 中对应功能的完整实现。通过本文的学习读者可以掌握 HarmonyOS 开发的核心 API 使用方法和最佳实践并能够独立实现类似功能。在实际开发中建议读者结合官方文档深入理解每个 API 的参数含义和适用场景并在项目中灵活运用。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力