Запуск исполняемого файла из класса вызывает исключение NetworkOnMainThreadExceptionJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Запуск исполняемого файла из класса вызывает исключение NetworkOnMainThreadException

Сообщение Anonymous »

Я работаю над проектом Android, и у меня возникла проблема.
Если я реализую приведенный ниже код, он будет работать нормально.

Код: Выделить всё

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();
На самом деле я пытаюсь создать класс, реализующий исполняемый объект, но когда я пытаюсь его запустить, я получаю исключение NetworkOnMainThreadException.
Внизу мой класс

Код: Выделить всё

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();
Я знаю, что означает это исключение, но не понимаю, почему оно работает с первым методом, но когда я использую класс, реализующий Runnable, я получаю исключение.

Подробнее здесь: https://stackoverflow.com/questions/242 ... dexception
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»