이 질문은 내가 읽은 많은 사람들과 매우 비슷하지만 다시 만족할만한 코드는 찾지 못했습니다. (또는 나는 그것을 깨닫기에는 너무 졸음다.)안드로이드에서 단일 데이터베이스 연결 유지
나는 그 중 하나만 존재하도록 싱글 톤 데이터베이스 도우미를 가지고있다. 문제는 여기에 없습니다. getReadableDatabase
및 getWritableDatabse
메쏘드를 사용하면서 단 하나의 데이터베이스 연결 만 존재하게 할 때 문제가 발생합니다.
대부분의 경우 동일한 참조를 반환하며 사용을 처리 할 수 있지만 읽기 전용 연결이 열려있는 경우 (메모리가 부족한 경우) 및 다른 스레드 쓰기 가능한 연결을 열려고합니다. 읽기 전용 연결이 닫히고 쓰기 가능한 연결을 열려고 시도 할 때까지 쓰기 스레드를 차단하고 싶습니다.
어떻게 하시겠습니까? 아마도 Java에서 일부 스레드 잠금만으로는 수행 할 수 있지만 어떤 메소드를 사용해야하는지는 확실하지 않습니다.
P. 내가 뭔가를 놓친 경우를 대비해 다른 방법으로 어떻게해야하는지 나와 함께 보여주십시오.
'메모리 부족 '?? DB의 크기는 얼마입니까? – Lucifer
몇 주 전에 같은 질문을 받았고 콘텐츠 공급자를 구현했습니다. 과잉인가요? 같은 응용 프로그램 내에서만 데이터에 액세스 할 수 있기 때문입니다. 하지만 SQLite 데이터베이스에 액세스하는 데있어 합병증을 추상화하는 방법을 좋아합니다. 또한 로더와도 잘 작동합니다. –
@ 루시퍼, 내 응용 프로그램은 결코 메모리를 사용하는 유일한 응용 프로그램입니다. – Pijusn