2012-09-20 6 views
2

, 메인 UI 스레드에서 미디어 레코더 중지가 호출됩니다. 안드로이드 사이트에서의 개발자 레퍼런스와 안드로이드 카메라 레퍼런스 코드는 똑같은 일을하는 것처럼 보입니다 (메인 UI 스레드에서 멈춤).Android 미디어 레코더 중지

그러나 특정 시나리오에서는 (SD 카드가 느리고 병렬 IO가 진행 중이고 SD 카드가 많이 조각되어 거의 가득 차 있습니다.) 중지하는 데는 (30-200 초) 돌아 오는 데 시간이 오래 걸리는 것으로 보입니다. 미디어 레코더 중지의 일부로 발생하는 I/O 작업 (녹화 된 비디오 파일 저장)이 완료 될 때까지 시간이 걸리기 때문에 이러한 현상이 발생한다고 생각합니다.

이로 인해 기본 UI 스레드 인 ANR이 5 초 이상 지속되는 것으로 보입니다.

내 첫 번째 본능은 별도의 스레드에서 미디어 레코더 정지를 이동하여 UI 스레드가 무료였습니다. 그러나이를 수행하면 몇 가지 위험한 시나리오가 발생할 수 있습니다. 저장이 진행되는 동안 사용자가 앱을 종료하면이 스레드 (stop()에서 멈춤)를 죽일 확실한 방법이 없습니다. 그리고 미디어 레코더가 중지 (및 해제)되지 않으면 사용자는 미디어 레코더 인스턴스가 필요할 수있는 다른 앱 (예 : gtalk)을 사용할 수 없습니다. 더 안드로이드는 onPause에서이 스레드에 합류해야 함을 의미하는 onPause에서 미디어 레코더를 해제 할 것을 권장합니다. 사용자가 다시 누르면 ANR이 발생합니다.

이 상황을 가장 잘 처리하는 방법에 대한 제안 사항이 있습니까? 상상해보십시오. 비슷한 시나리오를 겪은 다른 사람들이 있어야합니다.

답변

0

기기의 USB 케이블이 여전히 ADT에 연결되어있는 동안 지연을 측정 한 것으로 의심됩니다. 그렇지 않으면 stop()이 1 초 이내에 확실하게 복귀해야합니다.

관련 문제