安卓游戏 - 追踪时间

Woz*_*zza 4 android

我有一个Android的益智游戏.当谜题开始时,我采取当前时间:

long startTime = System.currentTimeInMillis()

当玩家完成拼图时,我会再次花时间,减去开始时间并计算出已用时间.一切都好.

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

我尝试使用保存已用时间onSaveInstaceState(Bundle).但onRestoreInstanceState(Bundle)重新进入应用程序时,不会调用其对应项.相反,该onResume()方法被调用?我读过这是因为应用程序没有被"杀死",而是仍然在内存中.在'杀'的情况下,我会想到View的状态也会丢失?我不认为在这种情况下跟踪视图是非常必要的,所以我也不会担心时间.

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

我想避免更新游戏循环中的已用时间,因为这似乎效率低下.

She*_*tib 9

我建议不要使用SharedPreference.


您只需要2个字段:startTimeelapsedTime

当玩家开始,初始化elapsedTime0startTimeSystem.currentTimeMillis()

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

elapsedTime = elapsedTime + (System.currentTimeMillis() - startTime);
Run Code Online (Sandbox Code Playgroud)

onResume()被调用时,初始化startTimeSystem.currentTimeMillis()

当玩家完成时,时间是

elapsedTime = elapsedTime + (System.currentTimeMillis() - startTime);
Run Code Online (Sandbox Code Playgroud)

如果逻辑有缺陷,请评论(:

注意:有一种方法只能使用一个字段.但我们会保留这一点供读者发现.