java.lang.RuntimeException: Methode, die nach release () aufgerufen wird

7
  1. Wenn ich nicht verwende mCamera.release (); in surfaceDestroyed (....) then CameraActivity kann nicht erneut von einer anderen Aktivität aus gestartet werden [kurz: App leider gestoppt ] Fehler Camera wird nicht freigegeben, aber wenn , tippe ich auf die Home-Taste [ von CameraActivity ] und dann wieder auf Start meiner App , kein Fehler (kurz gesagt funktioniert gut, und CameraActivity ohne Probleme zu öffnen)

  2. Und wenn ich bin, benutze * mCamera.release (); * in surfaceDestroyed (. ...) dann kann CameraActivity erneut von einer anderen Aktivität starten und Kamera ebenfalls freigeben , aber wenn ich auf die Home-Taste tippe und dann meine App erneut starte, wird die App leider beendet ....:

Aber ich möchte, dass beide Dinge zusammenarbeiten (zuerst Tippen Sie auf Home von CameraActivity und starten Sie die App erneut von CameraActivity - ohne Fehler ) und ( Start der Kamera von einer anderen Aktivität - ohne Fehler)

Wie ich geschrieben habe, funktionieren beide Dinge für mich, aber nicht zusammen .....

Zeilennummer 33 ist:

%Vor%

log abschließen:

%Vor%

VorschauSurface.java:

%Vor%     
Sun 27.12.2013, 12:20
quelle

6 Antworten

19

Versuchen Sie das, ersetzen Sie Ihren Code durch meinen, ich schätze, das wird Ihnen helfen, Ich habe es nicht versucht, aber es sieht so aus, als würden Sie Ihre Fehler beheben

%Vor%

Lass es mich so schnell wie möglich wissen ...

    
Android 30.12.2013, 09:21
quelle
3

Es war erfreulich, dass wenn Sie die Home-Taste drücken, Ihre aktuelle Aktivität im OnStop-Modus & amp; Wenn du wieder zurückkommst, wird es im Zustand des Neustarts beginnen. Nicht von dem Konstruktor von PreviewSurface, wo Sie die Kamera halten. Bevor es losgeht, versucht niemand die gleiche Kamera zu erreichen.

Aber wenn Sie eine andere Aktivität von Ihnen starten Aktivität, die eine SurfaceView verwendet, die vom Konstruktor & amp; wird versuchen, die gleiche Kamera zu halten, die bereits von Ihrer vorherigen Aktivität gehalten wurde.

    
CR Sardar 03.01.2014 07:30
quelle
1

Ich denke, Ihre mCamera ist null, sieht aus, als hätten Sie vergessen, die Kamera zu initialisieren

%Vor%     
praveen 27.12.2013 12:32
quelle
1

schau dir das an

an %Vor%     
Sush 27.12.2013 12:41
quelle
1

Überschreiben Sie statt onPause () und onResume () onStop () und onRestart (). Im Aktivitätszyklus wird onStop () aufgerufen, wenn die Aktivität nicht sichtbar ist, und der nächste Lifecycle-Methodenaufruf wäre onRestart (). Sehen Sie sich den folgenden Code an.

%Vor%

m_CameraPreview ist das Objekt der Klasse, das folgendermaßen aussieht: Die öffentliche Klasse CameraSurfaceView erweitert SurfaceView implementiert Callback

Dies ist die onRestart-Methode:

%Vor%

Das Rahmenlayout wird an die vorherige Kamera-Instanz gebunden und seine 'Oberflächenansicht'-Callbacks werden zusätzlich zum neuen Kameraobjekt erstellt, wodurch eine Wettlaufbedingung erzeugt wird. Daher müssten Sie es in onStop () freigeben und in onRestart () neu initialisieren. Hoffe, das hilft.

    
Pranav 21.01.2016 12:26
quelle
0
%Vor%     
user5493659 28.12.2015 11:49
quelle

Tags und Links