0

以下のコードをご覧ください。

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 から画像をロードしたいのですが、バックグラウンドでロードして、プレイ中のゲームに遅延や問題を引き起こしたいと考えています。

4

3 に答える 3

3

現在、load(); を呼び出しています。ネットワーク操作が完了するまで UI スレッドをフリーズする UI スレッドのメソッド。バックグラウンド スレッドで画像を取得するには、load(); を呼び出す必要があります。asの外側runOnUiThread:

    new Thread(new Runnable() {

       @Override
       public void run() {
         // call  load() method here
           load();
          ac.runOnUiThread(new Runnable() {

            @Override
            public void run() {
                // update image here without interrupting user
                  .....
            }
        });
      }
}).start();
于 2013-05-20T07:38:24.223 に答える