2012-06-28 56 views
0

我想從Android中的服務器加載對象。這個對象被加載到一個線程中。加載完成後,會調用_objectHandler以從對象中獲取一些鍵值,例如_filename鍵。每次檢索文件名時,我都想要顯示它。出於這個原因,我在第二個線程中循環加載對象的元素,並在每次加載值時調用一個_handler。我想得到的是所有的_filename值,但我得到的只是_fielName的最後一個值。我做錯了什麼?Android:處理程序不工作

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 
    } 
}; 
+0

使用[AsyncTask](http://developer.android.com/reference/android/os/AsyncTask.html) –

回答

0

你可以使用android.os.Handler類。這將爲您提供一種排隊行爲的機制,以便在不同於您自己的線程上執行。