Hi everyone this is my first question here so please don't be brutal for me, i also would like to sorry for my bad english in advance. So i am writing a simple app which job is to send and listen to UDP protocol on a specified port, and my problem comes when the app is minimized by home or back button and then brought back to front. After it is brought back my app throws an exception of EADDRINUSE which is caused by my UDP receiver thread:
public void run() {
try {
//Opening listening socket
Log.d("UDP Receiver", "Opening listening socket on port "+LISTENING_PORT+"...");
DatagramSocket socket = new DatagramSocket(LISTENING_PORT);
socket.setBroadcast(true);
socket.setReuseAddress(true);
while(true){
//Listening on socket
Log.d("UDP Receiver", "Listening...");
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
message_received = new String(packet.getData()).trim();
Log.d("UDP", "Received: '" + message_received + "'");
runOnUiThread(new Runnable() {
@Override
public void run() {
pokaztekst = (TextView) findViewById(R.id.textView);
pokaztekst.setText(message_received);
if(message_received.contains("192.168")){
String[] split_message = message_received.split("\"");
if (!listaurzadzen.toString().contains(split_message[3])) {
listaurzadzen.add(createPlanet("urzadzenie", split_message[3] + "\r\n" + split_message[1]));
lv.setAdapter(simpleAdpt);
}
}
}
});
}
} catch (Exception e) {
Log.e("UDP", "Receiver error", e);
}
}
}
and i start the thread in the onCreate method like this:
Thread receiver = new Thread(new Receiver());
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
receiver.start();
The consequence of this error is that the listview field and textview field in which the received messages should be displayed are blank. I hope someone can help me with this.