libGDX : 当我调用服务器主机时冻结我的游戏
libGDX : freezing my game when I call server host
我想像其他游戏一样创建每日奖励,所以我从 Apache
调用了 commons-net-3.6
库以从互联网上获取当前时间。然后我写了这段代码:
NTPUDPClient timeClient = new NTPUDPClient();
String TIME_SERVER = "time-a.nist.gov";
InetAddress inetAddress = InetAddress.getByName(TIME_SERVER);
TimeInfo timeInfo = timeClient.getTime(inetAddress);
long returnTime = timeInfo.getMessage().getTransmitTimeStamp().getTime();
Date time = new Date(returnTime);
System.out.println(time);
但是,有时工作正常,有时不工作并冻结我的游戏(无响应),为什么??
抱歉我的英语不好。
您是在单独的线程上调用此代码吗?
这不能在 libgdx 渲染线程上完成,该线程必须在一秒钟内至少调用 60 次。向服务器发出请求非常耗时,并且会阻塞线程直到完成。如果请求不是异步的,您必须 运行 它在一个单独的线程上。
最简单的方法(但不是最好的)是做这样的事情
new Thread() {
public void run(){
//Here you need to do the request
}
}.start();
您可以在此处找到更多信息
https://docs.oracle.com/javase/tutorial/essential/concurrency/runthread.html
我想像其他游戏一样创建每日奖励,所以我从 Apache
调用了 commons-net-3.6
库以从互联网上获取当前时间。然后我写了这段代码:
NTPUDPClient timeClient = new NTPUDPClient();
String TIME_SERVER = "time-a.nist.gov";
InetAddress inetAddress = InetAddress.getByName(TIME_SERVER);
TimeInfo timeInfo = timeClient.getTime(inetAddress);
long returnTime = timeInfo.getMessage().getTransmitTimeStamp().getTime();
Date time = new Date(returnTime);
System.out.println(time);
但是,有时工作正常,有时不工作并冻结我的游戏(无响应),为什么??
抱歉我的英语不好。
您是在单独的线程上调用此代码吗?
这不能在 libgdx 渲染线程上完成,该线程必须在一秒钟内至少调用 60 次。向服务器发出请求非常耗时,并且会阻塞线程直到完成。如果请求不是异步的,您必须 运行 它在一个单独的线程上。
最简单的方法(但不是最好的)是做这样的事情
new Thread() {
public void run(){
//Here you need to do the request
}
}.start();
您可以在此处找到更多信息 https://docs.oracle.com/javase/tutorial/essential/concurrency/runthread.html