当前位置: 代码迷 >> Android >> Android socket 编程 客户端接收的数据数据无法更新到UI上,只有当客户端与服务器断开连接时才情更新到UI上
  详细解决方案

Android socket 编程 客户端接收的数据数据无法更新到UI上,只有当客户端与服务器断开连接时才情更新到UI上

热度:553   发布时间:2016-04-28 02:17:32.0
Android socket 编程 客户端接收的数据数据无法更新到UI上,只有当客户端与服务器断开连接时才能更新到UI上
Android socket 编程 客户端接收的数据数据无法更新到UI上,只有当客户端与服务器断开连接时才能更新到UI上
public class MianActivity extends Activity {
private TextView  textView;

public Handler myHandler = new Handler()
{
public void handleMessage(Message msg) 
{
Bundle bundle = msg.getData();

String str = bundle.getString("mess");
textView.setText(str);
};
};
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        textView = (TextView) this.findViewById(R.id.text_show);
        
        startGetData();
    }

private void startGetData()
{
new Thread(new Runnable()
{
@Override
public void run()
{
Socket socket;
try
{
socket = new Socket();
socket.connect(new InetSocketAddress("192.168.191.1", 7777), 5000);  
InputStream in = socket.getInputStream();

byte[] buffer = new byte[200];

String data = "";
int length = 0;

while(-1 !=(length = in.read(buffer,0,buffer.length)) )
{
data += new String(buffer,0,length);
}


Message msg = new Message();

Bundle bu = new Bundle();
bu.clear();
bu.putString("mess", data);
msg.setData(bu);
myHandler.sendMessage(msg);

in.close();
socket.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}).start();
}
}


请大神指点一下那里问题?
------解决思路----------------------
应该是没有问题的,我一般使用消息来通知UI更新,楼主可以尝试一下。

Message msg = new Message();
msg.what = 3721;
msg.obj = str;
handler.sendMessage(msg);

------解决思路----------------------
首先myHandler?有没有接收到信息,其次是不是要用异步
------解决思路----------------------
                        while(-1 !=(length = in.read(buffer,0,buffer.length)) )
                        {
                            data += new String(buffer,0,length);
                        }
这地方是不是阻塞了?你说要断开服务器才能更新到UI,我估计是你的服务器发送的数据没有close?
另外就是可以在服务器端发送数据的时候 添加结束标示符 比如0xFF或者 特殊符号 ,客户端判断结束符 可以跳出循环就OK了。
  相关解决方案