原理是 我创建了一个activity,在里面放了一个类,并放了一个线程去监听,如果有数据,处理完,然后清空数据,等待下一次数据。 现在碰到的问题的,我需要1次执行2个command,不知道如何去解决了。

解决方案 »

  1.   

    我需要1次执行2个command: 这个没明白。 handler.post这个方法也不是线程,是主线程UI执行的,不知道是不是你的代码没贴完。
      

  2.   

    final UDPHelper uf = new UDPHelper(); final Handler handler2 = new Handler(); Runnable udp = new Runnable() {             @Override              public void run() {                 handler.postDelayed(this, 500);                     if(uf.getDestAddr()!=null&&uf.getCommandbyte()!=null){                         try {                              DatagramSocket sendSocket = uf.getSendSocket() ;                               sendSocket.send(uf.getSendPacket());//发送                              System.out.println("发送完毕---"+uf.getCommandbyte());                             sendSocket.receive(uf.getBackPacket());//接收                             System.out.println("接收完毕---"+uf.getCommandbyte());                             String backcommand = CodeUtil.bytesToHexString(uf.getBackbyte());                             System.out.println("methodTag---"+uf.getMethodTag());                             /*中间是一些数据处理*/                                                              uf.setCommandbyte(null);                         } catch (SocketException e) {                               e.printStackTrace();                           } catch (IOException e) {                               e.printStackTrace();                           }                     }                 } handler2.post(udp); 
    有两个问题:
    (1) handler.postDelayed(this, 500); 为什么不用handler2.postDelayed(udp); 
    (2)handler2.post(udp); 导致整个在主线程UI上,堵塞界面,不ANR才怪呢。楼主修改!