JAVA
[JAVA] NetworkOnMainThreadException 해결
때래뚫
2023. 7. 12. 12:00
NetworkOnMainThreadException이란?
-NetworkOnMainThreadException은 안드로이드의 기본 activity에서 network 관련 API를 직접 사용했을때 발생합니다. 저같은 경우에는 회사에서 하이브리드앱에 뷰어를 열어 문서를 저장할 때 메인스레드로 JDBC API로 DB에붙으려다가 발생한 경우입니다.
해결법
- 매우 간단합니다. 해당 API작동을 메인스레드가 아닌 별도의 스레드를 선언하여 작동시키면 문제없이 작동합니다.
예를 들어
@Override
public void eventReceived(Object sender, ResultEventArgs event) {
이벤트 로직;
JDBC 로직;
}
해당 코드처럼 실행하면 NetworkOnMainThreadException가 발생하지만, JDBC부분을 아래 코드처럼 새로운 스레드에서 작동하게 선언하면됩니다.
@Override
public void eventReceived(Object sender, ResultEventArgs event) {
이벤트 로직;
new Thread(() -> {
JDBC 로직;
})
}
간단하지만 앱 자체를 다뤄본적 없는 저에게 상당히 생소한 예외였고, 이 포스팅으로 간단하게 해결할 수 있으시면 좋겠습니다.