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

Android Studio开发游戏时highscore无法保存问题求助

Android游戏项目HighScore返回主界面显示为0的排查方案

已确认的正常逻辑与故障表现

  • 游戏内射击鸟类的实时积分累计逻辑运行正常
  • 已尝试各技术平台公开的同类问题解决方案,均未解决问题
  • 故障触发场景:角色死亡跳转回主界面时,HighScore数值固定显示为0,暂未定位根因
  • 关联代码截图:
    HighScore相关业务实现代码

按优先级排查以下高频出错点

  • SharedPreferences写入未提交
    绝大多数这类问题都是只调用了putInt()存值,没有调用apply()/commit()触发实际落盘操作。如果你的写入逻辑是在页面销毁的节点触发,优先用同步的commit()替代异步的apply(),避免异步写入任务还没执行完进程就被回收,导致数据没存上。
  • 读写Key不匹配
    逐字核对存HighScore、读HighScore两处使用的Key字符串,注意拼写、大小写、下划线这类细节,只要Key不一致,读取时就会直接返回你设置的默认值0。
  • 高分更新判断逻辑写反
    检查触发写入的判断条件,别把大小判断写反成当前分数 < 已存最高分才触发写入——这种逻辑下正常玩出来的更高分数永远不会触发存储操作,自然读不到更新后的高分。
  • 写入时机错误
    不要把高分存储逻辑放在主界面的生命周期方法里,正确的写入节点应该是角色死亡触发游戏结算的第一时间:立刻拿当前局分数和已存历史最高分比对,满足更新条件就直接写入存储,不要等页面跳转完成再做存储,避免跨页面传值丢失、上下文失效导致写入失败。
  • 读取后的值被默认值覆盖
    检查主界面渲染HighScore的逻辑,确认你显示的数值是从存储中读到的历史最高分,不是跨页面传值取到的默认0——很多人会在主界面onResume里直接取Intent带的分数值,没做非空判断就直接覆盖了从存储读到的正确高分,最终显示0。

快速定位技巧:在存储触发点、存储完成后立刻读取的节点、主界面渲染HighScore的节点分别加日志打印对应数值,顺着日志执行顺序就能快速定位是没存成功、读错了Key、还是值被后续逻辑覆盖了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 00:12:16