2013-11-26 6 views
1

Хорошо, я смотрю фрагмент кода ниже. Я вижу созданный экземпляр класса: recorder = new AudioRecord(..., тогда я вижу, что вызов метода, который мы уже внутри recorder.startRecording();, не является бесконечным циклом. Как это может быть рабочий фрагмент кода?Java, это бесконечный цикл?

private void startRecording(){//<--** this method is called from below ** 

       recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, 
RECORDER_SAMPLERATE, RECORDER_CHANNELS,RECORDER_AUDIO_ENCODING, bufferSize); 

       recorder.startRecording();//<--already in this method, endless loop??? 

       isRecording = true;    
       recordingThread = new Thread(new Runnable() {      
         @Override 
         public void run() { 
           writeAudioDataToFile(); 
         } 
       },"AudioRecorder Thread");    
       recordingThread.start(); 
     } 
+0

Похоже, запись и запись выполняются на двух отдельных потоках. Почему вы думаете, что это бесконечно? Не прекращается ли запись, когда нет данных для записи? – duffymo

+5

Является ли ваш метод 'private void startRecording()' внутри класса AudioRecord? Может, это другой класс? Edit: Ofcourse это должен быть другой класс, потому что он начинается с 'private', что означает, что вы не сможете вызвать этот метод для объекта. – chuthan20

+0

Можете ли вы показать нам больше кода, возможно, где определен 'recorder' –

ответ

3

Как @ chuthan20 указал и ссылки на given code метод выше от RecorderActivity в то время как она вызова метода (того же имени) в AudioRecord так нет, не рекурсивным, а не бесконечный цикл, просто происходит что два класса имеют методы с одним и тем же именем.

public class RecorderActivity extends Activity { 
    ...  
    private AudioRecord recorder = null; 
    ... 
} 
0

Глядя на полный код (контекст - это все!), Нет, это не бесконечный цикл. Локальный (частный) метод начальной записи активности создает экземпляр класса AudioRecord и вызывает метод startRecording этого объекта. Два разных класса.

Смежные вопросы