2011-11-12 3 views
0

병렬로 실행되는 두 개의 서로 다른 스레드에서 데이터베이스에 액세스해야하는 응용 프로그램에서 다음 오류가 발생합니다.다중 스레드를 사용하여 sqlite에 액세스 할 때 오류가 발생했습니다.

java.lang.IllegalStateException: attempt to acquire a reference on a close SQLiteClosable 

문제는 내가 (이 과정의 기간 동안) 스레드 부분에 데이터베이스에 부하를 수행하면서, 사용자가 동일한 다른 테이블을 수정 것이 주요 활동에 어떤 버튼을 누를 수 있다는 것입니다 데이터 베이스. 문제가 발생할 수있는 지점

이 오류를 방지하는 방법이 있습니까?

고맙습니다.

+0

활동 사이의 적절한 동기화를 통해이 문제를 해결할 수 있습니다. – JimmyB

답변

1

제 블로그 게시물을 확인하십시오. 그것은 sqlite 데이터베이스 연결을 유지하고 공유하는 방법과 문제를 피하는 방법을 설명합니다.

http://www.touchlab.co/blog/single-sqlite-connection/

기본적으로, "을 닫습니다"글로벌 싱글 하나 SQLiteOpenHelper 인스턴스를 유지하지 않으며, 결코. 그것은 기본적으로 단지 파일 참조이며, 응용 프로그램이 닫히면 파일 핸들은 독자적으로 닫힙니다.

관련 문제