在儿童活动中,我使用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
任务中,我可以在上传工作完成后得到反馈。在我看到反馈,甚至等待一段时间后,返回按钮仍然需要很长时间才能让我回到主要活动。有人对此提出建议吗?谢谢!
答案 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();
}