본문 바로가기

Android

[Android] android.os.NetworkOnMainThreadException

Java 오류 해결 NetworkOnMainThreadException

 

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xx.xx/com.xx.xx.Activity}: android.os.NetworkOnMainThreadException

 

Caused by: android.os.NetworkOnMainThreadException

 

 

네트워크 연결 작업 스레드는 main 스레드 말고 멀티 스레드로 돌려야 된다.

 

아래 코드에서는 thread.run() 대신 thread.start()로 수정하여 해결.

 

 

문제 코드

NetworkThread networkThread = new NetworkThread();
networkThread.run();

private class NetworkThread extends Thread {
    @Override
    public void run() {
    	try {
            URL url = new URL("https://xxx");
            InputStream inputStream = url.openStream(); //NetworkOnMainThreadException 발생
            . . .
        }
    }
}

 

 

수정 코드

NetworkThread networkThread = new NetworkThread();
networkThread.start(); //멀티스레드로 돌림
try {
    networkThread.join();
} catch (Exception e) {
    e.printStackTrace();
}

private class NetworkThread extends Thread {
    @Override
    public void run() {
    	try {
        	URL url = new URL("https://xxx");
            InputStream inputStream = url.openStream();
            . . .
        }
    }
}
반응형