2014-05-03 57 views
7

我的應用程序正在使用相機。我有一個CameraActivity類和CameraFragment類,相機在應用程序崩潰後未被釋放

CameraFragment負責釋放相機:拍攝照片時

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

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

我的應用程序崩潰。出於某種原因,相機未被釋放。現在我無法獲得相機對象無處!另外,Android相機應用程序是不是一個錯誤的工作「無法連接到相機」

現在我知道相機是一個單獨的對象,只有一個應用程序可以得到它的時間。 我不明白的是爲什麼onPause沒有運行,我如何保護相機實例更好?

此外,如果這樣的事情發生,我該如何強制釋放相機對象?這是一個好主意嗎?

可悲的是,我沒有爲什麼應用程序在第一個地方墜毀的信息。

感謝您的幫助。

羅伊

+0

嗯,我猜的onPause沒跑導致它_crashed_。我的猜測是,當你的應用程序崩潰時,相機對象被釋放。 – keyser

+0

攝像頭對象沒有發佈,即主要問題(和奇怪的部分)。相機對象仍然被捕獲。釋放相機對象的唯一方法是重新啓動設備 – royB

+2

你是對的,這可能是由於某種原因發生的。 [這](http://stackoverflow.com/a/17320457/645270)應該有所幫助。 – keyser

回答

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); 
     } 
    }); 
}