目前在做一个相机功能,相机主界面是预览页面,当我点击设置按钮进入设置页面时,然后预览界面就会停止预览,再然后了按Home键回到预览界面,再次启动应用程序时,相机预览界面显示黑屏。
看了网上大佬们的解决方法,有的是预览大小或者隐藏显示问题,但,都解决不了我的问题。
后来,我决定重新了解android的生命周期。
发现,当我再进入第二个界面时,相机已经变为空了,等我返回预览界面时需要重新打开相机。
具体请看下面代码:
进入第二个页面时会调用 onPause方法。
@Override
public void onPause() {
super.onPause();
Log.d(TAG, "onPause");
//unregisterReceiver(mIntentReceiver);
stopPreview();
if (mCamera != null){
mCamera.release(); // release the camera for other applications
mCamera = null;
Log.d(TAG, "release.........");
}
}
从第二个界面返回时,会调用onResume()
@Override
public void onResume() {
super.onResume();
Log.d(TAG, "onResume");
//registerReceiver(mIntentReceiver, mIntentFilter);
//startPreview();
if (mCamera==null) {
mOpenCameraThread = new OpenCameraThread();
mOpenCameraThread.start();
Log.d(TAG, "open Camera.........");
}
}
private class OpenCameraThread extends Thread {
@Override
public void run() {
openCamera();
startPreview();
mHandler.sendEmptyMessage(MSG_INIT_RECORDER);
}
}
哈哈哈哈~这样就解决了,当然,我的方法不一定适合每个人。要根据自己的实际情况来。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)