안녕하세요.
카메라때문에 몇주동안 고생하고 있습니다.

기본적인 작동은 되는데 이상한 현상이 발생하여 문의를 드립니다.

1. 메인 activity에서 카메라 activity를 호출하면 아래와 같이 됩니다.

onCreate -> onResume -> surfacecreated -> surfaceChanged -> onPause -> surfaceDestroyed
 -> onCreate -> onResume -> onPause -> onCreate -> onResume -> onPause
 -> onCreate -> onResume -> onPause -> onCreate -> onResume
 -> onResume -> surfaceCreated -> surfaceChanged

처음 surfaceDestroyed 로 가더니 onCreate -> onResume -> onPause 가 4번반동되고나서야
정상적으로 카메라가 구동이 됩니다.

위의 단계를 거치다보니 카메라가 상당히 늦게 뜨고 있습니다.

무슨 이유로 이런 현상이 생기게 될까요?

2. 위의 문제인건지 확실치는 않으나
메인 activity에서 startActivityForResult 로 카메라의 결과를 가져올때
카메라를 찍고 결과를 정상적으로 메인 activity의 onActivityResult 를 호출하는것이 아니라
메인 activity의 onCreate 가 호출되고 다시 카메라로 자동이동후 (메인의 onCreate에서 카메라 activity로 이동하게 되어 있습니다.)
2번째 찍었을때 비로서 메인 activity의 onActivityResult 이 호출되는 것입니다.

왜 이런 현상이 발생하는지 몇주동안 찾다가 이렇게 질문드립니다.

3. 카메라 구동후 이전버튼을 클릭하게 되면 아래 부분을 거치는데 이전으로 돌아가지도 않고 계속 다시 카메라프리뷰가 작동합니다.
onPause -> onCreate -> onResume -> surfaceDestroyed -> surfaceCreated -> surfaceChanged
그리고 다시 한번 이전버튼을 클릭하면
onPause -> surfaceDestroyed 로 동작하면서 뻗어버립니다.

public boolean onKeyDown(int keyCode, KeyEvent event) {
   if (keyCode == KeyEvent.KEYCODE_BACK) {
         setResult(RESULT_CANCELED);
         finish();
         return true;
    }
}