来自后台线程android的消息

时间:2013-07-02 07:56:50

标签: android multithreading background message

为什么在这段代码中,不工作?绕过if语句的控制

@Override  
public void run() {   

  try {        

      Log.d("UDP", "S: Connecting..."); 

      // CREO ED INIZIALIZZO IL SOCKET UDP 
      DatagramSocket socket = new DatagramSocket(null);
      socket.setReuseAddress(true);
      socket.bind(new InetSocketAddress(SERVERIP, SERVERPORT));
      //DEFINISCO LA GRANDEZZA DEL BUFFER IN RICEZIONE

      byte[] buf = new byte[64];  
     //CREO ED INIZIALIZZO IL PACCHETTO

      DatagramPacket packet = new DatagramPacket(buf, buf.length);  
      Log.d("UDP", "S: Ricezione...");  
      IL SERVER SI METTE IN "RICEZIONE" DEL PACCHETTO 

      socket.receive(packet);  

      Log.d("UDP", "S: Ricevuto: " + new String(buf, 0, packet.getLength()) + "'");  
      Log.d("UDP", "S: Ok.");  

      String risultato= new String(buf, 0, packet.getLength());
      System.err.println(risultato);



      if(risultato=="COMANDO RICEVUTO CORRETTAMENTE"){
          // Showing Alert Message
          alertDialog.show();
          System.err.println("ALERT DIALOG");
      }


 } catch (Exception e) {  
      Log.e("UDP", "S: Error", e);  
 } 
 }   

2 个答案:

答案 0 :(得分:0)

更改

if(risultato=="COMANDO RICEVUTO CORRETTAMENTE"){
          // Showing Alert Message
          alertDialog.show();
          System.err.println("ALERT DIALOG");
 }

 if(risultato.equalsIgnoreCase("COMANDO RICEVUTO CORRETTAMENTE")){
          // Showing Alert Message
          alertDialog.show();
          System.err.println("ALERT DIALOG");
 }
用于Strings对象的Java ==中的

比较String的引用而不是它们的内容

答案 1 :(得分:0)

最好在代码顶部创建final String CONSTANT_NAME以使其更具代表性。 另外,请阅读本教程以了解一些编程模式:

http://thinkandroid.wordpress.com/2010/03/27/incorporating-socket-programming-into-your-applications/