请看下面的代码。
Activity ac= (Activity)cxt;
ac.runOnUiThread(new Runnable() {
@Override
public void run() {
load();
}
});
这是我正在调用一个函数以从 URL 加载精灵的构造函数。功能如下
private void load()
{
if(isInternetOn()){
try {
ITexture mTexture = new BitmapTexture(mEngine.getTextureManager(), new IInputStreamOpener() {
@Override
public InputStream open() throws IOException {
URL url = new URL("http://tenlogix.com/cupcakemania/Ads/burgermaker.png");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
BufferedInputStream in = new BufferedInputStream(input);
return in;
}
});
mTexture.load();
MyImageFromWeb = TextureRegionFactory.extractFromTexture(mTexture);
} catch (IOException e) {
Log.d("TenlogixAds"," "+e);
}
AdSprite = new Sprite(0, 0, MyImageFromWeb, mEngine.getVertexBufferObjectManager());
}
else{
Log.d("TenlogixAds"," No Internet Connection Detected.. ");
AdSprite = null;
}
}
问题是,如果我现在在 UI 线程中调用加载函数,图像会被加载,但当我在 UI 线程中调用它时它没有加载。
在 UI 线程中调用它很重要,因为我想要执行此任务是后台任务,这会导致游戏运行出现问题。
我也尝试过 AsyncTask,但我用 UI Thread 描述的问题与 Async Task 相同。
任何人都可以帮我解决这个问题吗?
我想从网络加载图像,并且我希望它在后台加载,从而导致任何延迟或游戏正在播放的问题。