2014-05-03 9 views
7

Meine App verwendet Kamera. Ich habe eine CameraActivity Klasse und CameraFragment Klasse,Kamera wird nicht freigegeben, nachdem App abstürzt

CameraFragment für die Freigabe der Kamera verantwortlich ist:

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

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

Meine App abgestürzt während der Aufnahme eines Bildes. Aus irgendeinem Grund wurde die Kamera nicht veröffentlicht. jetzt kann ich das Kameraobjekt nirgends bekommen! Auch die Android Kamera App funktioniert nicht mit einem Fehler "Kann nicht mit der Kamera verbinden"

jetzt weiß ich, dass die Kamera ein Singleton-Objekt ist und nur eine App kann es in einer Zeit bekommen. was ich nicht verstehe ist warum OnPause nicht ausgeführt wurde und wie kann ich die Kamera-Instanz besser schützen?

Auch wenn so etwas passiert, wie kann ich das Kameraobjekt loslassen? Ist es eine gute Idee?

Leider habe ich nicht die Information, warum die App auf den ersten Platz abgestürzt ist.

Danke für Ihre Hilfe.

Roy

+0

Nun, ich bin zu raten onPause nicht laufen weil es _crashed_. Meine Vermutung ist, dass das Kamera-Objekt _is_ freigegeben wird, wenn Ihre App abstürzt. – keyser

+0

Kamera-Objekt ist nicht freigegeben, dass das Hauptproblem (und der seltsame Teil). Kameraobjekt wurde immer noch gefangen. Die einzige Möglichkeit, das Kameraobjekt freizugeben, war das Gerät neu zu starten – royB

+2

Sie haben Recht, das kann aus irgendeinem Grund passieren. [This] (http://stackoverflow.com/a/17320457/645270) sollte helfen. – keyser

Antwort

0

Dies sollte helfen:

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