2012-06-30 6 views
1

재귀 fileobserver로 작동하는 클래스가 있습니다. 그것이하는 일은 부모 디렉토리에있는 모든 디렉토리를 파일 관찰자로 만든 다음 파일을 관찰하기 시작합니다. 디버그 모드에있을 때 logcat의 모든 파일 변경 사항을 기록하기 때문에 작동한다는 것을 알고 있습니다. 그러나 디버거에서 연결을 끊고 응용 프로그램을 다시 시작하면 시작 및 설정 로그가 만들어 지지만 파일이 변경되지는 않습니다. 디버거가 라이브가 아니기 때문에 가비지 수집기를 정리할 수 있습니까? 나는 그것을 실행하는 Intentservice가 결코 죽지 않기 때문에 그것이 사실이라고 생각하지 않는다.File Observer는 디버그 모드에서 작동하지만 디버거없이 이벤트가 트리거되지 않습니다.

EDIT : intentservice를 nonstopintentservice로 변경했으며 동일한 문제가 여전히 발생합니다. 따라서 서비스는 파괴되지 않습니다.

당신은 어떻게 생각하십니까?

감사

답변

0

그것은 디버거로 살아 의도 서비스 목록에도 불구하고, 정말 아니었고 파일 관찰자가 완료되고 있었다 것으로 나타났다. 그래서 객체가 존재하도록 가비지 컬렉터를 속일 쓰레드를 썼습니다.

0

나는 서비스와 다른 스레드에서 시도했다. 그러나 아무도 일하지 않았다. 문제는 FileObserver가 가비지 수집 된 것입니다.

경고 : FileObserver가 가비지 수집되면 이벤트 전송이 중지됩니다. 이벤트 수신을 계속 유지하려면 다른 라이브 객체의 FileObserver 인스턴스에 대한 참조를 유지해야합니다.

관련 문제