0

Androidのサーバーからオブジェクトを読み込もうとしています。このオブジェクトはスレッドにロードされます。ロードが終了すると、_objectHandlerが呼び出され、オブジェクトからいくつかのキー値(たとえば、_filenameキー)が取得されます。ファイル名を取得するたびに表示したい。このため、2番目のスレッドでロードされたオブジェクトの要素をループし、値がロードされるたびに_handlerを呼び出しています。取得したいのはすべての_filename値ですが、取得しているのは_fielNameの最後の値だけです。私が間違っていることは何ですか?

ArrayList <myObject> object;
String filename;

Thread thread = new Thread (MyActivity.this);
thread.start();


public void run() {
    Looper.prepare();
    try {
        object = getObjectFromServer();
    } catch (Exception e) {
        e.printStackTrace();
    }
    _objectHandler.sendEmptyMessage(0);
    Looper.loop();
}

Handler _objectHandler = new Handler() {
@Override
    public void handleMessage(Message msg) {
        for (int i = 0; i < object.size(); i++) {
            myObject obj= object(i);
            new Thread(new Runnable() {
                 public void run() {
                      filename= obj.getFileName();
                      Message msg = new Message();
                      _handler.sendEmptyMessage(0);
                 }
            }).start();
        }
    }
};

Handler _handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        Log.i("The fielname is ", " filename" + filename
    }
};
4

1 に答える 1

0

android.os.Handler クラスを使用できます。これにより、自分のスレッドとは異なるスレッドで実行されるアクションをキューに入れるメカニズムが提供されます。

于 2012-06-28T14:24:40.333 に答える