일반적으로 이야기 한다면, Main UI가 무언가 작업을 하고 있다면, 다른 작업을 할 수 없는 것이죠.
Thread가 하나가 배정되어 있기 때문에, 한번에 한가지 일밖에 못합니다.
카메라로 찍은 후에도 계속 카메라의 입력을 화면에 표시한다거나, 찍은 후에 Call Back으로 받고 화면 전환을 하는 작업 중에 유저가 했던 다른 동작과 중첩되는 상황이 오면 충돌이 나는 거죠.
그래서, 보통 앱 UI에서 서버와 통신을 한다던지, 사이즈가 큰 이미지를 저장할때, 압축, 포맷 변환, 앵글 각도 변환 등을 하는 이미지 프로세싱을 하는 헤비한 작업들은 별도의 쓰레드나 Task로 할당하는게 바람직합니다.
즉 시간이 걸리거나, 헤비한 작업을 할 경우 또는 간단한 작업을 하더라도 앱 화면에서 무언가 지속적인 동작이 수행되고 있다면, 별도의 프로세스나 쓰레드로 작업을 진행해야, 중간에 앱이 멍청해 지는 이상한 현상을 줄일 수 있습니다.