我似乎错过了一些东西,因为我不明白为什么在Android文档中(Android Camera doc. link)建议在onPause()Activity回调中释放Camera对象(以及MediaRecorder)?那时活动仍然可能可见,并且Camera可能正在运行预览,那么为什么当Activity已经隐藏时,Camera对象会在onPause()而不是onStop()中释放?我明白MediaRecorder对象可以在onPause()中停止,但Camera本身对我来说没有意义。我在这里错过了什么?从Android文档代码块低于(其下释放相机标题):为什么Camera需要在onPause()而不是onstop()方法的Activity中释放?
@Override
protected void onPause() {
super.onPause();
releaseMediaRecorder(); // if you are using MediaRecorder, release it first
releaseCamera(); // release the camera immediately on pause event
}
private void releaseMediaRecorder(){
if (mMediaRecorder != null) {
mMediaRecorder.reset(); // clear recorder configuration
mMediaRecorder.release(); // release the recorder object
mMediaRecorder = null;
mCamera.lock(); // lock camera for later use
}
}
对,我刚刚检查了我的默认相机应用程序。在我的Android手机(Samsung Infuse)上,似乎当我开始录制时,我按住“home”按钮以进入“最近的应用程序。弹出窗口”,录制不会停止。我是否认为它在onStop中释放摄像头而不是在暂停?它也确实造成麻烦,因为从“最近的应用程序窗口”时,我导航到我的应用程序。这要求相机我得到例外。 – spirytus 2012-08-07 04:38:36