
BasePedo 数据持久化指南LiteOrm 存储每日步数与跨天清零的实现【免费下载链接】BasePedoandroid计步功能初探项目地址: https://gitcode.com/gh_mirrors/ba/BasePedoBasePedo 是一款开源的 Android 计步器应用本文是一份面向新手的BasePedo 数据持久化指南重点讲解它如何借助LiteOrm 数据库框架完成每日步数存储以及如何优雅地实现跨天清零让你的计步数据当天清零、次日重来且关机重启不丢失。全文不涉及复杂理论跟着步骤就能看懂。为什么要给计步器做数据持久化计步器如果只在内存里累加步数一旦锁屏被杀进程、重启手机当天的步数就全部归零了。BasePedo 的做法是把步数按日期写入本地数据库每次启动时先读库恢复今日步数再继续累加。这就是数据持久化的核心价值——数据不丢、跨天清零、稳定可靠。BasePedo 选用的持久化方案是LiteOrm对应库文件为 lite-orm-1.7.0.jar它是一款轻量级 Android ORM 框架只需在实体类上加注解就能自动完成建表、增删改查非常适合新手快速上手。第一步设计每日步数数据表 StepData数据持久化的前提是先定义存什么。BasePedo 在 StepData.kt 中定义了一张step表结构极其精简只有三个字段id自增主键每条记录的唯一标识today日期字符串格式yyyy-MM-dd用来区分是哪一天的步数step当日累计步数通过Table(step)、PrimaryKey、Column等注解LiteOrm 就能自动完成建表与字段映射无需手写 SQL这就是 ORM 框架最省心的地方。第二步封装 LiteOrm 数据库工具类 DbUtils为了让增删改查更统一BasePedo 把数据库操作集中封装在 DbUtils.kt 中提供了几个常用方法createDb()创建数据库本例库名为basepedo.dbinsert()/insertAll()插入单条或批量步数记录getQueryAll()查询全部记录getQueryByWhere()按条件查询例如按日期查当天步数update()更新已有记录今天的新步数覆盖旧值deleteAll()清空整表这套封装让业务代码无需关心 SQL 细节直接调用即可也方便后续扩展分页查询等能力。第三步实现每日步数存储与恢复的核心流程核心逻辑都在 StepService.kt 中持久化主要围绕两个方法展开① 启动时恢复今日步数initTodayData每次服务启动先用当天的日期去数据库查询记录查不到记录说明今天是新的一天步数从 0 开始查到一条记录把库里存的步数恢复到内存界面继续累加② 定时/事件触发保存save保存时同样先按日期查询不存在则新增一条记录insert已存在则更新步数update使用冲突替换策略这样查询—新增或更新的组合保证了每天在表中只保留一条记录避免重复数据。第四步定时保存机制让数据始终最新 ⏱️步数一直在变不能每次都实时写库太耗电BasePedo 采用定时批量保存策略默认每 30 秒保存一次当前步数屏幕锁屏后为了省电改为每 60 秒保存一次对应代码在 CountDownTimer.kt 封装的倒计时器配合 StepService.kt 中的TimeCount实现计时结束即调用save()落库然后开启下一轮计时循环往复。第五步跨天清零的实现技巧 这是本指南的重点。跨天清零不能简单地在步数很大时清零因为用户可能两天不打开 App。BasePedo 的巧妙做法是监听系统日期变更广播在 StepService.kt 的广播接收器中注册了Intent.ACTION_DATE_CHANGED一旦收到该广播说明日期已切换重新执行initTodayData()用新日期去查库新的一天自然查不到记录步数恢复为 0调用clearStepData()把内存计数归零重新开始计步整个过程无需判断昨天是多少步只需把日期作为数据的唯一维度跨天清零问题就迎刃而解。这正是以日期为键设计的高明之处。第六步关机、锁屏、弹窗等关键节点也不丢数据 除了定时保存BasePedo 还在以下关键时刻主动落库进一步保障数据安全屏幕解锁时保存一次ACTION_USER_PRESENT系统弹出关机对话框时保存一次ACTION_CLOSE_SYSTEM_DIALOGS关机广播到来时保存一次ACTION_SHUTDOWN服务被销毁时通过 AndroidManifest.xml 中配置的BOOT_COMPLETED等广播自动重启重启后再从数据库恢复步数总结三步看懂 BasePedo 的持久化设计 ✅回顾整个实现BasePedo 的数据持久化可以浓缩为三句话一张表用 StepData.kt 以日期 步数存储每日数据一个工具类用 DbUtils.kt 封装 LiteOrm 的增删改查一套保存策略定时保存 关键事件保存配合日期变更广播实现跨天清零这套设计虽然代码不多却覆盖了计步器最核心的数据可靠性需求非常适合作为 Android 计步器开发的入门参考。如果你也想做自己的计步 App不妨直接克隆这个项目从数据持久化部分开始读起很快就能上手【免费下载链接】BasePedoandroid计步功能初探项目地址: https://gitcode.com/gh_mirrors/ba/BasePedo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考