安卓游戏 - 记录时间

标签 android

我有一款安卓益智游戏。当拼图开始时,我取当前时间:

long startTime = System.currentTimeInMillis()

当玩家完成拼图后,我再次计算时间,减去开始时间并计算出耗时。这一切都很好。

我的问题是当应用程序中断时该怎么办。例如通过电话。目前,拼图会自动保持之前的状态(就像在 View 中一样)。但是,计算 completionTime = currentTime - startTime 现在将无效。

我已经尝试使用 onSaveInstaceState(Bundle) 保存耗时。然而,当重新进入应用程序时,它的对应物 onRestoreInstanceState(Bundle) 不会被调用。而是调用 onResume() 方法?我读到这是因为该应用程序尚未被“杀死”,而是仍在内存中。在“杀死”的情况下,我想 View 的状态也会丢失?我不认为在这种情况下跟踪 View 是非常必要的,所以我也不会担心时间。

有没有办法从 onResume() 中读取一个包,我应该只实现一个共享首选项吗?

我想避免在游戏循环中更新耗时,因为这看起来效率不高。

最佳答案

我建议根本不要使用 SharedPreference。


您只需要 2 个字段:startTimeelapsedTime

播放器启动时,将elapsedTime初始化为0startTimeSystem.currentTimeMillis()

onPause() 被调用时,初始化 elapsedTime 使用

elapsedTime = elapsedTime + (System.currentTimeMillis() - startTime);

当调用onResume()时,将startTime初始化为System.currentTimeMillis()

当播放器完成后,时间是

elapsedTime = elapsedTime + (System.currentTimeMillis() - startTime);

如果逻辑有问题请评论(:

注意:有一种方法可以只使用一个字段。!但我们会保留它以供读者发现。

关于安卓游戏 - 记录时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8153744/

相关文章:

android - 如何在 Eclipse 中使用布局 View 和 View 属性

android - 驻留在 Android 动态 'on-demand' 功能模块中的原始资源无法作为 URI 引用

android - 是否可以在不占用双倍数据库空间的情况下发布 Android 应用程序?

安卓 Volley Rails : NoMethodError (undefined method `+@' for "":String)

android - 我应该在哪里保存 authtoken android 2.3

android - PocketCasts 如何实现这种转换/效果?

java - 字符串比较问题

android - 如何在 Android fragment 中禁用屏幕捕获?

android - 如何访问图库 ->相机媒体视频并将其显示在按钮点击列表中?

android - 在 Android 应用程序中深度链接 Deezer(广播和艺术家)