我在当前正在调试的程序中将经过的时间用作变量。当我正在调试这个时,经过的时间变量仍然会增加,而我正在检查给出不想要的结果的变量并使调试无效。反正有没有冻结时间或阻止变量改变?(我System.currentTimeMillis()
用来计算时间)。
编辑:我在空间中有一个对象随着时间的增加而移动,因为我System.currentTimeMillis()
用来计算已经过去了多少时间,它在调试中不起作用。我想知道是否有办法解决这个问题,谢谢。
我在当前正在调试的程序中将经过的时间用作变量。当我正在调试这个时,经过的时间变量仍然会增加,而我正在检查给出不想要的结果的变量并使调试无效。反正有没有冻结时间或阻止变量改变?(我System.currentTimeMillis()
用来计算时间)。
编辑:我在空间中有一个对象随着时间的增加而移动,因为我System.currentTimeMillis()
用来计算已经过去了多少时间,它在调试中不起作用。我想知道是否有办法解决这个问题,谢谢。
解决此类问题的一种常见方法是使用依赖注入。创建一个使用时间源初始化(注入)的时钟类(例如)。在生产代码中,这个源很可能是 System.nanotime() 或 System.currentTimeMillis()。在调试中,您使用可控时钟。Clock 类的调试实现具有允许使用模拟时间的附加方法(例如suspend()、resume()、setClockTo())。
System.currentTimeMillis()
做它应该做的事情:在指令执行的那一刻给你时间。当您“检查变量”时,您的程序线程被暂停,但时间仍在继续......因此时间增加
您的替代方法是不使用 System.currentTimeMillis()。这相当复杂,因为在调试时,您希望在代码运行时有时间向前推进。
最好的解决方案是改变这个要求,让这不是问题。
例如说你有一个很短的超时,当你在调试器中运行时,你可以让它增加超时。