프로그래밍 언어/Java

[Android java] Cannot access database on the main thread ERROR 에러 해결

happy_life 2022. 1. 2. 18:39

Thread 

한 프로세스 내에서 동작되는 실행 단위

ex) 크롬 브라우저라는 프로세스에서 유투브에 접속하여 동영상을 시청할 때 유투브 데이터를 다운 받으면서 시청하는 작업이 동시에 이루어 지는 것도 여러 Thread를 사용하기 때문입니다.

 

 

Cannot access database on the main thread  에러 해결

 

 

 

하지만 이런 것은 실제로 어플리케이션을 배포했을 때는 사용하면 안됩니다.

데이터베이스와 연결해 이것저것 가져올 때 어플리케이션은 DB관련 태스크를 우선적으로 시행하므로

앱이 Freeze (멈춤) 될 수 있기 때문입니다. 따라서 MainThread가 아닌 BackGround Thread 에서 동작해야 합니다.

 

 

 

Runnable과 Thread를 사용하여 이런 식으로 DB와 관련된 모든 코드를 run() 메소드 안에 넣어주시면 됩니다.

 

 

 

 

이런식으로 코드를 작성하면 backgroundThread에서 DB를 다룰 수 있게 됩니다.

저는 DB객체 생성하는 부분을 run이 아닌 밖의 부분에 해줬었는데요 그래서 계속 오류가 났었습니다.

여러분들은 저처럼 삽질 하지 않으시길 바랍니다. .>ㅎㅎ