我有一个Android的益智游戏.当谜题开始时,我采取当前时间:
long startTime = System.currentTimeInMillis()
当玩家完成拼图时,我会再次花时间,减去开始时间并计算出已用时间.一切都好.
我的问题是应用程序中断时该怎么办.例如通过电话.此刻,拼图会自动保留在之前的状态(就像在视图中一样).但是,计算completionTime = currentTime - startTime现在无效.
我尝试使用保存已用时间onSaveInstaceState(Bundle).但onRestoreInstanceState(Bundle)重新进入应用程序时,不会调用其对应项.相反,该onResume()方法被调用?我读过这是因为应用程序没有被"杀死",而是仍然在内存中.在'杀'的情况下,我会想到View的状态也会丢失?我不认为在这种情况下跟踪视图是非常必要的,所以我也不会担心时间.
有没有办法从onResume()读取一个包,我应该只实现共享首选项吗?
我想避免更新游戏循环中的已用时间,因为这似乎效率低下.
我建议不要使用SharedPreference.
您只需要2个字段:startTime和elapsedTime
当玩家开始,初始化elapsedTime到0与startTime以System.currentTimeMillis()
当onPause()被调用时,初始化elapsedTime使用
elapsedTime = elapsedTime + (System.currentTimeMillis() - startTime);
Run Code Online (Sandbox Code Playgroud)
当onResume()被调用时,初始化startTime到System.currentTimeMillis()
当玩家完成时,时间是
elapsedTime = elapsedTime + (System.currentTimeMillis() - startTime);
Run Code Online (Sandbox Code Playgroud)
如果逻辑有缺陷,请评论(:
注意:有一种方法只能使用一个字段.但我们会保留这一点供读者发现.
| 归档时间: |
|
| 查看次数: |
3084 次 |
| 最近记录: |