2013-05-07 209 views
1

我嘗試構建一個應用程序來控制無人機PARROT。 爲此,我在無人機和設備之間創建一個插槽,並將其放入一個線程中。 起初線程正確運行,無人機起飛,但現在(我沒有觸及我的代碼),無人機不想起飛。我注意到該線程不會立即運行(而之前正確運行) 這裏是我的代碼與主題:Android:線程無法啓動

String commande=""; 
byte[] cmdToByte; 
InetAddress IpDrone; 
DatagramSocket clientSocket; 
boolean etat; 
DatagramPacket sendPacketWithCmd; 
private byte[] ip = {(byte)192, (byte)168, (byte)1, (byte)1 }; 
boolean isRunning = true; 
private final static long TIME_SLEEP= 20; 

public void run() { 
     try { 
    IpDrone = InetAddress.getByAddress(ip); 
    } catch (UnknownHostException e1) { 

    etat = true; 
    } 

    try { 
    clientSocket = new DatagramSocket(); 
    } catch (SocketException e) { 

    etat = true; 
    } 

    while(isRunning){ 

    runControl(); 
    etat = true; 
    try { 
     Thread.sleep(TIME_SLEEP); 
    } catch (InterruptedException e) { 

     } 
    } 

    } 
public void runControl(){ 

commande = "AT*REF=1,290717696<LF>AT*REF=2,290717952<LF>AT*REF=3,290717696<LF>"; 

cmdToByte = commande.getBytes(); 


try { 

sendPacketWithCmd = new DatagramPacket(cmdToByte,cmdToByte.length,IpDrone,5556);      
clientSocket.send(sendPacketWithCmd); 
    } catch (IOException e) { 
    e.printStackTrace(); 
    etat = true; 
      } 
etat = true; 
isRunning=false; 
clientSocket.disconnect(); 
clientSocket.close(); 
      } 

我知道有,但的AsyncTask我真的想用我自己的線程來做到這一點。 所以我想知道我的問題是什麼,爲什麼我的線程無法啓動(在主要活動中,我用start()運行我的線程)。 提前感謝您!

+0

可以ü請調整你的代碼? – 2013-05-07 09:42:43

回答

1

嘗試使用線程這樣的

new Thread(new Runnable() { 

     @Override 
     public void run() { 
      // put ur code here 

     } 
     }).start(); 
+0

我只是這樣做,它仍然不起作用 – le2s 2013-05-07 10:04:06

+0

最近有類似的問題,我發現@Override失蹤意外失蹤。加回來,現在工作正常。 – 2015-09-21 11:40:49