我有一个安卓的益智游戏。当游戏开始时,我会记录下当前时间:
我的问题在于应用程序被打断时该怎么办。例如电话打进来。此时,拼图会自动保留在之前的状态(因为已经在视图中了)。但是,计算
我曾尝试使用
有没有一种方法可以从
long startTime = System.currentTimeInMillis()
。当玩家完成拼图后,我会再次记录时间并减去起始时间,这样就可以计算出经过的时间。这部分没问题。我的问题在于应用程序被打断时该怎么办。例如电话打进来。此时,拼图会自动保留在之前的状态(因为已经在视图中了)。但是,计算
completionTime = currentTime - startTime
将不再有效。我曾尝试使用
onSaveInstaceState(Bundle)
保存经过的时间。然而,其对应方法onRestoreInstanceState(Bundle)
并没有在重新进入应用程序时被调用。相反,在这种情况下,将调用onResume()
方法。我读到这是因为应用程序还没有被“杀死”,而只是仍然在内存中。在“杀死”应用程序的情况下,我想象视图的状态也会丢失?在这种情况下,我认为跟踪视图并不是非常必要的,因此我不会担心时间丢失。有没有一种方法可以从
onResume()
方法中读取捆绑包,或者我是否应该使用共享首选项?我想避免在游戏循环中更新经过的时间,因为这似乎效率不高。
onPause()
中,我有elapsed = System.currentTimeMillis() - startTime
,而在onResume()
中,我有startTime = System.currentTimeMillis() - elapsed
。并不是我认为你的建议不可行,但是这种方法需要在我的代码其他地方进行较少的更改(尽管我有一个变量startTime,它实际上并不代表开始时间) - Wozza