我從我需要修改的應用程序繼承了一些代碼(yuck)。所討論的活動實現了SurfaceHolder.Callback和SensorEventListener。此活動適用於自定義相機。爲什麼我的android活動停止?
該代碼可以很好地自動對焦並拍照。一旦拍攝照片,我開始另一個結果活動來裁剪圖像。一旦該活動開始,SurfaceDestroyed的SurfaceHolder.Callback被調用(如預期的那樣)。此時,現有的應用程序會釋放相機(如預期的那樣)。但是,當新的作物活動啓動時,原始相機活動停止(堆棧跟蹤:Instrumentation.callActivityOnStop-> Activity.performStop)。
編輯:當我的活動的onStop被稱爲完整的堆棧跟蹤:
CameraActivity.onStop() line: 784
Instrumentation.callActivityOnStop(Activity) line: 1219
CameraActivity(Activity).performStop() line: 5186
ActivityThread.performStopActivityInner(ActivityThread$ActivityClientRecord, ActivityThread$StopInfo, boolean, boolean) line: 3003
ActivityThread.handleStopActivity(IBinder, boolean, int) line: 3052
ActivityThread.access$1000(ActivityThread, IBinder, boolean, int) line: 139
ActivityThread$H.handleMessage(Message) line: 1251
ActivityThread$H(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 137
ActivityThread.main(String[]) line: 4918
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 511
ZygoteInit$MethodAndArgsCaller.run() line: 1004
ZygoteInit.main(String[]) line: 771
NativeStart.main(String[]) line: not available [native method]
因爲這個攝像頭的活動不再有效,並且沒有收到來自作物活動的結果。
爲什麼銷燬表面/釋放相機會導致相機活動停止?我必須在這裏丟失一些東西......
你能顯示你的相機活動代碼嗎? – Sameer 2013-05-08 14:11:40
這是非常大,笨蛋(約900線)。因爲我沒有寫出來,所以我不確定是否可以出於合法原因把整個事情都放在那裏。但是,如果有些部分是有用的,我可以把它(SurfaceHolder.callback方法也許?)。 – Innova 2013-05-08 14:27:32
在'onStop()'中放置一個斷點,找出調用它的地方。 – 323go 2013-05-08 14:48:55