应用程序崩溃后相机未释放

7

我的应用正在使用相机。我有一个 CameraActivity 类和一个 CameraFragment 类。

CameraFragment 负责释放相机:

@Override
public void onPause() {
    super.onPause();

    if (mCamera != null) {
        mCamera.release();
        mCamera = null;
    }
}

我的应用在拍照时崩溃了。由于某种原因相机没有被释放,现在我无法获取相机对象!另外,安卓相机应用程序也出现错误:“无法连接相机”。
现在我知道相机是一个单例对象,每次只能有一个应用程序可以获取它。 我不理解的是为什么onPause方法没有运行,如何更好地保护相机实例?
此外,如果发生类似的情况,我该如何强制释放相机对象?这是个好主意吗?
遗憾的是我没有第一次应用程序崩溃的信息。
谢谢您的帮助。
罗伊

我猜onPause没有运行是因为它_崩溃了_。 我的猜测是当您的应用程序崩溃时,相机对象已被释放。 - keyser
相机对象没有被释放,这是主要问题(也是奇怪的部分)。相机对象仍然被占用。唯一释放相机对象的方法是重新启动设备。 - royB
2
你说得对,这可能是由于某些原因造成的。这个链接应该会有所帮助。 - keyser
谢谢!希望使用Thread.setDefaultUncaughtExceptionHandler能够奏效。 - royB
这是一个非常有效的问题 - 我也一直面临着同样的问题... - slott
1个回答

0

这应该会有所帮助:

    private static void unCaughtExceptionHandler() {
    Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
        public void uncaughtException(final Thread thread, final Throwable ex) {
            ex.printStackTrace();
            releaseCamera();
            System.exit(0);
        }
    });
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接