如何侦听来自线程套接字的传入消息以更新 android 中的 Listview?

How to listen for incoming messages from sockets of threads to update a Listview in android?

我正在开发一个 android 应用程序,我必须在其中创建与一台服务器的多客户端连接。在服务器端,我正在为每个客户端创建一个新线程并且它工作正常,但是在新创建的线程中,我正在侦听来自套接字的消息并更新在片段中创建的列表视图,它没有得到更新。请帮我解决这个问题。

public class ClientSocketHandler extends Thread {

 private static final String TAG = "ClientSocketHandler";
 //private Handler handler;
// private ChatManager chat;
 private InetAddress mAddress;
 InputStream dataInputStream=null;
 OutputStream dataOutputStream=null;
 static String msgToSend="";
 int i;
 char c;
 String newMsg="";
 Boolean flag=true;
 WiFiChatFragment frg;  
 Handler handler;
 public ClientSocketHandler(InetAddress groupOwnerAddress) {
 this.mAddress = groupOwnerAddress;
 //this.handler=handl;
  }
 @Override
 public void run() {
 Socket socket = new Socket();
 try {
 socket.bind(null);
 socket.connect(new InetSocketAddress(mAddress.getHostAddress(),
 WiFiServiceDiscoveryActivity.SERVER_PORT), 5000);

 Log.d(TAG, "Launching the I/O handler");
    dataInputStream = socket.getInputStream();
    dataOutputStream = socket.getOutputStream();


    while (true) {
        while(flag){
            if((i=dataInputStream.read())!=1){

                frg.pushMessage(newMsg);
                newMsg="";
                flag=false;
            }
            else{
            c=(char)i;
            newMsg+=c;}

        }
    if(!msgToSend.equals("")){
             dataOutputStream.write(msgToSend.getBytes());
             dataOutputStream.flush();
             msgToSend = "";
            }

    }
 } catch (IOException e) {
 e.printStackTrace();
 try {
 socket.close();
 } catch (IOException e1) {
 e1.printStackTrace();
 }
 return;
 }
 }

 public static void sendMsg(String msg){
           msgToSend = msg;
 }


}

我认为这可能发生在以下任何情况下,但未处理。 1.设置列表适配 2. 检查客户端是否收到数据并添加到数据源。 3. 将数据添加到ListView 的数据源后调用notifyDataSetChanged()。