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 로직;
                    })
                }

간단하지만 앱 자체를 다뤄본적 없는 저에게 상당히 생소한 예외였고, 이 포스팅으로 간단하게 해결할 수 있으시면 좋겠습니다.

+ Recent posts