繁体   English   中英

应用程序挂在Camera.release()上

[英]App hangs on Camera.release()

我有一个应用程序在其中调用自定义活动,以记录音频和视频。 它使用MediaRecorder和Camera类。 我的问题是,当用户在录制视频时单击后退按钮或取消按钮 ,活动始终挂在Camera.release()上,但是如果先按停止按钮,则没有问题。 这是我的代码:

停止按钮代码:

mRecorder.stop();   // Stop recording
mRecorder.reset();  // Reset recorder
camera.stopPreview();

的onDestroy():

mRecorder.reset();  // Release media recorder
mRecorder.release();
if (camera != null) {
    camera.stopPreview();
    camera.setPreviewCallback(null);
    camera.release();
}
mRecorder = null;
camera = null;

我也尝试将mRecorder.stop()添加到onDestroy()上,但这没有解决。 在这里检查过,但没有一个答案有效。 我真的很为难。

此类代码应放在onPause()而不是onDestroy() ,以确保在需要时调用它。

根据文档

注意: 不要指望此方法被称为保存数据的地方! 例如,如果活动正在内容提供商中编辑数据,则这些编辑应在onPause()或onSaveInstanceState(Bundle)中提交,而不是在此处提交。 通常实现此方法以释放与活动相关联的线程之类的资源,以使被破坏的活动不会在其其余应用程序仍在运行时留下这些东西。 在某些情况下,系统会简单地终止活动的托管过程,而无需在其中调用此方法(或任何其他方法),因此不应将其用于处理在过程消失后仍然存在的事情。

您不是在这里保存数据,而是适用相同的原理。 因此,在onPause()停止记录将确保用户按下“后退”按钮时代码能够运行。

覆盖onBackPressed()也可以,但是如果Activity因其他原因而进入后台,则onBackPressed()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM