以下のコードをご覧ください。
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 スレッドで load 関数を呼び出すとイメージがロードされますが、UI スレッドで呼び出すとイメージがロードされないことです。
このタスクを実行したいのは、実行中のゲームに問題を引き起こす背景であるため、UI スレッドで呼び出すことは重要です。
AsyncTask も試しましたが、UI Thread で説明した問題は Async Task と同じです。
誰でもこの問題を解決できますか?
Web から画像をロードしたいのですが、バックグラウンドでロードして、プレイ中のゲームに遅延や問題を引き起こしたいと考えています。