2017-11-14 3 views
0

realm 파일을 삭제하는 동안 java.lang.IllegalStateException이 나타납니다.파일을 삭제하기 전에 영역의 모든 인스턴스를 닫는 방법

java.lang.IllegalStateException : 열린 영역과 관련된 파일을 삭제할 수 없습니다. 그 파일을 삭제하기 전에) (왕국의 모든 인스턴스를 닫습니다 기억 /data/data/com.mypackage.name/files/filename.realm

내가 모두 executeTransactionAsyncexecuteTransaction 방법을 사용했다. 그래서, 전체 realm 파일을 삭제하기 전에 닫을 수없는 인스턴스 async이 있다고 생각합니다.

realm의 모든 인스턴스를 닫거나이 예외가 발생하지 않고 realm 파일을 삭제하는 방법은 무엇입니까?

답변

1

오픈 인스턴스가 많은 장소에서 나올 수 있기 때문에 좀 더 자세히 설명하지 않으면 대답하기가 어렵습니다. 아마도 아래 두 개의 링크가이 영역 인스턴스와 함께 작동하는 방식에 몇 가지 지침을 제공 할 수 있습니다

당신의 응답을 https://realm.io/docs/java/latest/#closing-realms

+0

https://realm.io/docs/java/latest/#realm-instance-lifecycle 감사를 참조하십시오. 그것도 내가 생각한 것과 동일합니다. 'Realm'이'getLocgealInstanceCount' 또는'getGlobalInstanceCount' 인스턴스를 통해 영역 인스턴스 수를 얻을 수 있지만 인스턴스 목록을 가져올 수없는 이유는 무엇입니까? 또는 모든 영역 인스턴스를 중지하고 닫는 기본 함수가 아닙니다. – NamNH

+0

우리는'forceClose' 메쏘드를 만들 수 있습니다. 그러나 그것은 아마도 당신의 앱의 다른 부분을 망가 뜨릴 것입니다. 그래서 우리는 그것을 추가하지 않았습니다. –

+0

알겠습니다. 제한된 지식으로, 나는'executeTransactionAsync'가 새로운'RealmAsyncTask'를 만들고, 보류중인 트랜잭션 영역과 함께 새로운'bgRealm' 인스턴스를 생성한다는 것을 소스에서 발견했습니다. 'submitTransaction' 후에 닫을 수 있지만 트랜잭션에 있다면 수동으로 모든 인스턴스를 중지 할 수 없으므로 영역 파일을 삭제할 수 없습니다. – NamNH