Android:处理程序不工作

时间:2012-06-28 12:18:18

标签: android multithreading handler

我正在尝试从Android中的服务器加载对象。该对象加载到一个线程中。加载完成后,将调用_objectHandler以从对象获取一些键值,例如_filename键。每次检索文件名时,我都想显示它。出于这个原因,我在第二个线程中循环遍历加载对象的元素,并在每次加载值时调用_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
    }
};

1 个答案:

答案 0 :(得分:0)

你可以使用android.os.Handler类。这将为您提供一种机制,以便在不同于您自己的线程上执行操作。