2016-08-08 22 views
0

我正在使用AudioRecord對象,並在AudioRecord.OnRecordPositionUpdateListener內執行AudioRecord.read將數據寫入字節緩衝區,之後我調用另一個對象的方法來處理字節緩衝區,然後將其返回以寫入文件,問題是對象的處理是相當長的,似乎是停止主線程,這是奇怪的我認爲AudioRecord.OnRecordPositionUpdateListener是螺紋如何在Android Studio中線程處理錄製音頻?

回答

0

除非它明確說這樣,假設沒有任何線程在android中。它在UI線程上的所有回調。

執行此操作的正常方法是在應用程序的onCreate或onStart中啓動一個線程,並讓它等待來自主線程的消息。您的onMarkerRead(或其他任何您需要的函數)的實現將會向該線程發送一條消息。無論何時調用通知函數,您都可以創建一個線程,但每次收到通知時都保持線程避免在操作系統級別創建線程。

避免在這裏使用AsyncTasks。他們聽起來像是正確的解決方案,但由於所有應用程序任務都是單線程的,因此可能會無限期地停頓。