应用程序崩溃后相机未释放
Posted
技术标签:
【中文标题】应用程序崩溃后相机未释放【英文标题】:Camera is not released after app crashes 【发布时间】:2014-06-19 23:41:25 【问题描述】:我的应用正在使用相机。我有一个CameraActivity
类和CameraFragment
类,
CameraFragment 负责释放相机:
@Override
public void onPause()
super.onPause();
if (mCamera != null)
mCamera.release();
mCamera = null;
我的应用在拍照时崩溃了。由于某种原因,相机没有被释放。现在我无法获得相机对象!此外,android 相机应用程序无法使用错误“无法连接到相机”
现在我知道相机是一个单例对象,一次只有一个应用程序可以获取它。 我不明白为什么 onPause 没有运行,我怎样才能更好地保护相机实例?
另外,如果发生这种情况,我该如何强制释放相机对象?这是个好主意吗?
遗憾的是,我不知道应用程序最初崩溃的原因。
感谢您的帮助。
罗伊
【问题讨论】:
好吧,我猜 onPause 没有运行是因为它崩溃了。我的猜测是当您的应用崩溃时,相机对象被释放。 相机对象没有被释放,这是主要问题(和奇怪的部分)。相机对象仍然被捕获。释放相机对象的唯一方法是重启设备 你是对的,这可能出于某种原因发生。 This 应该有帮助。 谢谢!使用 Thread.setDefaultUncaughtExceptionHandler,希望它能工作 这是一个非常有效的问题 - 也面临同样的问题...... 【参考方案1】:这应该会有所帮助:
private static void unCaughtExceptionHandler()
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler()
public void uncaughtException(final Thread thread, final Throwable ex)
ex.printStackTrace();
releaseCamera();
System.exit(0);
);
【讨论】:
以上是关于应用程序崩溃后相机未释放的主要内容,如果未能解决你的问题,请参考以下文章