Android NetowrkOnMainThreadException
Привет!!
Я пытаюсь создать приложение для Android, чтобы управлять дроном Ar. Но у меня возникает проблема, когда я пытаюсь подключить свое устройство к дрону. Я создал поток, чтобы сделать сокет. Но когда я запускаю его в основной деятельности, у меня возникает исключение: android.os.NetworkOnMainThreadException.
Это мой код с моей темой в классе ThreadCmd:
String commande="";
byte[] cmdToByte;
String iPinString;
InetAddress IpDrone;
DatagramSocket clientSocket;
Thread threadDecollage;
TextView tv ;
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) {
e1.printStackTrace();
etat = false;
}
try {
clientSocket = new DatagramSocket();
} catch (SocketException e) {
e.printStackTrace();
etat = false;
}
while(isRunning){
runControl();
try {
Thread.sleep(TIME_SLEEP);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
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 = false;
}
etat = true;
isRunning=false;
}
public boolean retourneetat(){
return etat;
}
После в основной деятельности:
Threadcmd tc = new Threadcmd();
tc.run();
Я не вижу своей ошибки, поэтому я прошу вас, можете ли вы мне помочь!! (я не забываю разрешение)
ps: прошу прощения за мой английский:)
1 ответ
Решение
tc.run();
Это твоя проблема. Здесь вы вызываете метод run() в том же потоке.
Чтобы начать новую тему, позвонитеtc.start();