回去需要很长时间

时间:2012-08-16 18:23:51

标签: android performance audio-recording

在儿童活动中,我使用MediaRecorder录制一些音频并有两个按钮:第一个将开始录制,第二个将返回其父活动。但是每次按下返回按钮时,返回主要活动的视图需要很长时间。我的代码里面回复按钮的回调是:

public void onClick(View arg0) {        
        if (arg0.getId() == R.id.startRecord) 
        {
           StartRecording();
        } 

        else if (arg0.getId() == R.id.goBack) 
       {
       if(mediaRecorder!=null)
           {
             mediaRecorder.stop();
             mediaRecorder.release();
             mediaRecorder = null;
           }
       this.finish();

       }
   }

父活动的onCreate()方法仅启动多个按钮并为其设置侦听器方法。我真的无法弄清楚为什么回去行动需要很长时间。一个值得一提的现象是,如果我先没先录制但先点击返回按钮,它会很快返回到父活动。只有在我录制一些音频后才会出现响应时间长的情况。我上传了录制的音频,但是我将上传内容放在AsyncTask任务中,我可以在上传工作完成后得到反馈。在我看到反馈,甚至等待一段时间后,返回按钮仍然需要很长时间才能让我回到主要活动。有人对此提出建议吗?谢谢!

1 个答案:

答案 0 :(得分:1)

你可以覆盖后退按钮,虽然我看到它似乎很多开发人员都不会对这个想法很友好。

@Override
public void onBackPressed() {
   mediaRecorder.stop();
   mediaRecorder.release();
   mediaRecorder.reset();
   mediaRecorder = null;
}

看看它是否适合你。


更好的是,这样的事情可能会更有用,这样您就可以轻松地轻松调用stop()方法:

public void onClick(View arg0) {        
    if (arg0.getId() == R.id.startRecord) {
        StartRecording();
    } else if (arg0.getId() == R.id.goBack) {
        if(mediaRecorder!=null) {
        stopRecording();
    }
    this.finish();
}


public void stopRecording() throws IOException {
    mediaRecorder.stop();
    mediaRecorder.release();
    mediaRecorder.reset();
    mediaRecorder = null;
}

@Override
public void onBackPressed() {
   stopRecording();
}