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 로직;
})
}
간단하지만 앱 자체를 다뤄본적 없는 저에게 상당히 생소한 예외였고, 이 포스팅으로 간단하게 해결할 수 있으시면 좋겠습니다.
'JAVA' 카테고리의 다른 글
[Spring boot]IntelliJ 외장 톰캣에 배포하고 실행하기 (0) | 2023.08.16 |
---|---|
[Spring] Spring boot 프로젝트 생성 방법 (0) | 2023.07.14 |
[JAVA] Try-Catch문에 대하여 (0) | 2023.07.11 |
[JAVA] 익명 클래스에 대하여 (0) | 2023.07.10 |
[JAVA] 지역 변수와 전역 변수 (0) | 2023.07.07 |