我需要用WS(websockets)实现一个LibGDX项目。 androidAsync似乎是一个很好的。
然而,我仍然坚持我所想的两种解决方案。
一:我是否使用核心模块(Common for Desktop,Android,IOS等)。在那里调用所有AA功能。但它没有编译。它似乎需要Android.net.uri或核心模块无法使用的内容。
二:我是否只做Android特定。根据LibGDX,我通过Interface做到了。现在我实现了接口,但猜猜什么会有回调内部接口,我无法使用。阻塞的未来可以与return语句一起使用,但我似乎无法找到WS的阻塞调用,因为在设计中它依赖于事件回调。 Android模块中实现的代码用于相应的核心模块接口。
@Override
public String getStringNonAsync(String url)
throws ExecutionException, InterruptedException {
Future<String> stringFuture = AsyncHttpClient.getDefaultInstance().executeString(
new AsyncHttpGet(url), new AsyncHttpClient.StringCallback() {
@Override
public void onCompleted(Exception e, AsyncHttpResponse source, String result) {
}
}
);
Log.d("Android", "Interfce called");
return stringFuture.get();
}
如何从完成的回调中获取结果字符串,而不是阻止调用get()。
在核心模块中调用此代码。 asyncInterface是在所有其他模块中实现的接口。我无法检索回调,只返回语句(据我所知)。
new Thread(new Runnable() {
@Override
public void run() {
try {
Tap = game.asyncInterface.getStringNonAsync(Url);
//todo set the string, onRender().
} catch (ExecutionException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();