今天做了一个TCP和UDP通信的测试,其中使用到两个线程,一个用来监听tcp,另一个用来监听UDP.

首先在线程中使用死循环来时刻监听数据,Socket,ServerSocket,DatagramSocket这些就不说了,网上很多例子

在收到消息的时候我需要把消息推送到界面上,由于在线程中操作UI控件,百度了好几种方法,照抄来都用了一遍,其中很方便的View.Post 

UI控件基本都有这个功能,比如我在得到数据后要抛给界面,界面有个TextView叫TxtEdit

于是

TxtEdit.post(new Runnable(){public void run(){
                                             Log.d("UDP", "发送完毕,清空文本框");
                                             SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
                                             String date=sdf.format(new java.util.Date());  
                                              TxtInfo.setText(TxtInfo.getText()+"\r\n"+date+"\t\r\n"+str);
                                             TxtEdit.setText("");
                                            Toast.makeText(getApplicationContext(), "发送成功!", Toast.LENGTH_LONG).show(); } });

方法很简单,

TxtEdit.post(new Runnable(){public void run(){
// TODO 添加需要执行的界面操作
 } });

另一种方法是用Handler

    protected Handler    uiHandler=new Handler(){
        @Override
    public void handleMessage(Message msg)
        {
            Log.d("收到消息", "更新界面");
            TxtInfo.setText(msg.obj.toString());
            super.handleMessage(msg);
            
        }
        
    };
View Code

相关文章:

  • 2021-09-19
  • 2021-05-24
  • 2021-07-02
  • 2021-05-28
  • 2022-12-23
  • 2022-12-23
  • 2022-01-03
  • 2022-12-23
猜你喜欢
  • 2021-07-27
  • 2022-02-11
  • 2021-11-11
  • 2021-07-21
  • 2022-12-23
  • 2022-01-29
  • 2022-02-05
相关资源
相似解决方案