你这里 myThread.wait();了,是在主线程里wait了啊,在等着线程里的notifyAll呢,当然会黑掉
你应该用handler来发消息

解决方案 »

  1.   

    楼主,1楼的说法是正确的,这里我把你的代码整理了下  ,红色字体为关键处
    package app.example.testapp;import java.util.Arrays;
    import java.util.HashMap;
    import java.util.Map;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.app.Activity;
    import android.view.Menu;public class MainActivity extends Activity {
    Thread myThread = new Thread(new Runnable() {
     
            @Override
            public void run() {
                try {
                    Map<String, String> map1 = new HashMap<String, String>();
                    map1.put("", "");
                    String retStr = "";
                    retStr = NetTool.sendGetRequest(messageShowUrl, map1,
                            "utf-8");
                    String[] str = retStr.split(",");
                    list = Arrays.asList(str);
                    listAll.clear();
                    for (int i = 0; i < str.length / 5; i++) {
                        Map<String, Object> map2 = new HashMap<String, Object>();
                        map2.put("user_name", list.get(i * 5));
                        map2.put("object_words", list.get(i * 5 + 1));
                        map2.put("my_words", list.get(i * 5 + 2));
                        map2.put("date", list.get(i * 5 + 4));                    // 如果用户没有传照片,map2中传的imageUrl就为空
                        System.out.println("list3 = " + list.get(i * 5 + 3));
                        if (!list.get(i * 5 + 3).equals(" ")) {
                            String imageUrl1 = "http://10.0.2.2:8080/BBStuServlet/"
                                    + list.get(i * 5 + 3);
                            String imageUrl = imageUrl1.replace(" ", "");
                            map2.put("imageUrl", imageUrl);
                        } else {
                            map2.put("imageUrl", "");
                        }
                        listAll.add(map2);
                    }
                    handler.sendEmptyMessage(0);//给Handler发送消息
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    Handler handler = new Handler() { @Override
    public void handleMessage(Message msg) {
    super.handleMessage(msg);
    if (msg.what==0) {//接收到对应的消息进行处理
    MyAdapter adapter = new MyAdapter(this);
    messageList.setAdapter(adapter);
    }
    }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    myThread.start();// 开启线程

    }}
      

  2.   

    en 谢谢   但是为什么会死锁呢?是我wait() notify()用的不对还是android的只能用handler在主副线程通信?