Если я реализую приведенный ниже код, он будет работать нормально.
Код: Выделить всё
new Thread(new Runnable() {
@Override
public void run() {
try
{
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND);
DatagramSocket datagramSocket = new DatagramSocket(8000);
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
while (true)
{
datagramSocket.receive(packet);
Log.v(TAG, new String(packet.getData(), 0, packet.getLength()));
}
}
catch (SocketException ex)
{
Log.e(TAG, "Failed to bind socket. Exception: " + ex.toString());
}
catch (IOException ex)
{
Log.e(TAG, "Failed to read socket data. Exception: "+ ex.toString());
}
}
}).start();
Внизу мой класс
Код: Выделить всё
public class AddServerThread implements Runnable {
private static final String TAG = "ADD SERVER THREAD";
private boolean cancelThread = false;
@Override
public void run()
{
Log.d(TAG, "Listening for available servers");
try
{
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND);
DatagramSocket datagramSocket = new DatagramSocket(8000);
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
while (!cancelThread)
{
datagramSocket.receive(packet);
Log.v(TAG, new String(packet.getData(), 0, packet.getLength()));
}
}
catch (SocketException ex)
{
Log.e(TAG, "Failed to bind socket. Exception: " + ex.toString());
}
catch (IOException ex)
{
Log.e(TAG, "Failed to read socket data. Exception: "+ ex.toString());
}
}
public void cancelThread()
{
cancelThread = true;
}
}
Код: Выделить всё
AddServerThread addServerThread = new AddServerThread();
addServerThread.run();
Подробнее здесь: https://stackoverflow.com/questions/242 ... dexception
Мобильная версия