내 앱은 디렉토리에 대한 파일 변경 사항을 감시하고 변경 사항이있을 때마다 사본을 업로드해야합니다. 이렇게하려면 FileObserver
을 사용했습니다. 나는 그것을 창조, 이동, 닫기 기록 및 수정에 업로드해야합니다. 문제는 수정에 달려있다. 수정은 디스크에 변경 사항이 기록 될 때마다 호출됩니다. 파일이 크고 (복사가 많이되거나 변경된 경우) 수백 개의 수정 이벤트가 발생하지 않을 정도로 원자 적이지 않은 경우 업로드를 시도 할 때마다 내 응용 프로그램이 꺼집니다. 여러 번 그것이 충돌합니다. 내 첫 번째 생각은 수정 이벤트를 제거하여 닫기 쓰기가 호출 될 때만 업로드하도록하는 것입니다. 불행히도, 이것이 항상 부름되지는 않습니다. 그래서 나는 다소 수정을해야 할 것이다. 그래서 내 질문은 이것입니다 : 파일 수정의 끝을 감지 할 때 가장 좋은 방법이 있습니까? 이 파일은 수정이 완료되면 업로드해야합니다. 이 일에 대해 어떻게 생각하세요? 마지막 수정 이벤트가 발생한 시점을 어떻게 알 수 있습니까? 복잡한 타이머 시스템을 만들어야합니까, 아니면 더 쉬운 방법이 있습니까? (없는 경우, 타이머 시스템을 만드는 가장 좋은 방법을 말해 줄 수 있습니까?)변경 사항을 기반으로 파일을 업로드하는 스마트 방법
많은 질문을했지만, 브레인 스토밍과 아이디어에 감사드립니다.
감사합니다.
편집 : 그래서 나는 이상한 것을 발견했습니다. Android 4.2 이상에서는 Open
이 실행되지 않으므로 close
은 실행되지 않습니다. 그냥 FYI.
'File.isOpen()'? 내가 찾으면 유용하게 들리네. 너 무슨 소리 야, 이거 일종의 도서관이야? –
FileObserver를 사용하고 열기/닫기 이벤트를 추적합니다. 또한 FileLock http://developer.android.com/reference/java/nio/channels/FileLock.html을 사용하여 파일에 대한 상호 액세스를 보장 할 수 있습니다. 파일에 순차적으로 액세스하는 경우 부울 변수를 사용하십시오. –
좋아, 내가 그랬다. 해시 맵과 timertask를 사용하여 여러 이벤트를 10 초 지연으로 병목 현상을 일으켰습니다. 감사! –