【问题标题】: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,希望它能工作
  • 这是一个非常有效的问题 - 也面临同样的问题......

标签: android android-camera


【解决方案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);
        }
    });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2017-05-17
    • 2018-05-07
    • 2012-10-15
    • 1970-01-01
    相关资源
    最近更新 更多