내 안드로이드 응용 프로그램은 내 문장, 커서 및 데이터베이스를 공개하지 못했다고 불평하는 오류를 자주 기록합니다. 사실, 나는 그것을 사용하는 코드의 마지막에 {} 블록에있는 모든 커서를 명시 적으로 릴리스하고 있으며,이를 포함하고있는 클래스의 finalize() 메소드에서 데이터베이스를 닫을 것이다.Android : SQLite 데이터베이스 인스턴스를 닫을 때 걱정할 필요가 있습니까?
내 응용 프로그램의 구조로 인해 데이터베이스 개체 (finalizer 제외)에서 close() 메서드를 명시 적으로 호출하는 것이 매우 어려워집니다. 예를 들어 데이터베이스를 사용하는 클래스가 Activity 클래스가 아니기 때문에 활동에 의해 간접적으로 사용되는 클래스 일 수 있습니다. 그래서 그 클래스는 그것이 궁극적으로 붙어있는 Activity가 언제 파괴되는지 알지 못합니다.
이 문제에 대해 걱정해야합니까? 내 데이터베이스 인스턴스를 명시 적으로 닫지 않아서 일부 리소스가 누출 되었습니까? 어떤 것이 파일에 쓰여지지 않을 위험이 있습니까? Android에서의 SQLite 구현은 캐싱을 작성합니까? 이 기능을 끄거나 강제로 동기화 할 수 있습니까?
finalizers에 관한 Android VM의 정책은 무엇입니까?
프랭크
예, 대개는 정리하지만이 경우 이미 존재했던 데이터베이스 기능을 추가하고있었습니다. non-gc 환경에서 얻을 수있는 소멸자 보호 호출에 대해 언급해야 할 것이 있습니다. 청소하기 좋은 곳. –