2014. 10. 2. 01:49

모든 UI어플리케이션은 메인 메뉴와 타스크 전환자에서 실행이 가능하며 서비스 어플리케이션은 다른 어플리케이션에 의해서 실행될 수 있다.  또한 모든 어플리케이션(UI와 서비스 어플리케이션)은 디바이스가 등록된 조건과 부합된 상태가 되었을 때 실행될 수 있다. (예: 특정 시간, NFC관련 데이터 수신 등)  어플리케이션이 실행되면 프로세스 메니져(Process Manager)는 필요한 라이브러리와 어플리케이션의 실행 바이너리를 메모리에 적제하고 어플리케이션의 인스턴스가 시작 포인트- OspMain() 메소드 - 에서 생성되고 실행된다. 


어플리케이션의 라이프 사이클

생성되어 실행된 모든 UI어플리케이션과 서비스 어플리케이션은 다음 그림의 왼쪽과 같은 기본적인 라이프 사이클을 갖는다.  UI어플리케이션의 경우, 추가적으로 우측의 프레임 라이프 사이클을 포함하며 생성하된 AddFrame() 메소드가 호출 될 때 초기화(OnInitializing) 된다.

어플리케이션이 실행되면 OnAppInitializing() 이벤트 핸들러가 호출되고 이때 프레임이 추가된다. 만약 실패하면 어플리케이션이 종료된다.



어플리케이션의 상태 전환
모든 타이젠 네이티브 어플리케이션들은 위 그림의 왼쪽 라이프 사이클의 4개 이벤트 핸들러에 대응하는 4가지 상태를 갖는다.


1. 초기화 중 상태(Initializing)
- 어플리케이션 프레임워크가 어플리케이션을 초기화 한다. (Tizen::App::App)
- 이전 실행에서 저장된 어플리케이션의 데이터가 복구될 수 있다.(Tizen::App::AppRegistry 클랫)
- UI어플리케이션의 경우, 어플리케이션의 프레임이 생성되어야 한다. (Tizen::App::UiApp)

2. 실행 중 상태(Running)
- UI어플리케이션이 실행중이라면 포그라운드나 백그라운드 모드간 전환이 가능하고, 전환 과정에서 어플리케이션의 프레임의 상태가 변경된다.

3. 종료 중 상태(Terminating)
- 어플리케이션이 리소스를 해제하고 상태를 저장한다.

4. 종료 상태(Terminated)
- 어플리케이션 프레임워크가 메모리로부터 어플리케이션을 제거한다.

프레임의 상태 전환 
어플리케이션이 초기화 된 후에는 실행 상태가되고 프레임은 활성화(Activated), 비활성화(Deactivated), 최소화(Minimized)와 같이 3가지 중 한가지 상태를 갖게 된다. End 키를 누르거나 시스템 리소스가 부족할 경우, 어플리케이션은 종료될 수 있으며 OnAppTerminating 이벤트 핸들러가 호출되어 어플리케이션의 리소스를 해제하고 어플리케이션이 프레임을 삭제하면 프레임의 상태는 파괴화(Destroyed)된 상태가 된다.


1. 활성화 상태(Activated) : 입력 디바이스로부터 이벤트를 받고 화면에 보여지는 상태
2. 비활성화 상태(Deactivated) : 다른 앱이 활성화 상태가 되면 활성화 상태 앱은 비활성화 상태가 된다. 이 상태에서 입력은 받을 수 없다. 비활성화 상태의 앱은 부분적으로 화면에 보여질 수 있다. (예를 들어 시스템 팝업창이 뜨면-전화가 오거나 알람이 울리면- 앱은 비활성화 상태가 된다.)
3. 최소화 상태(Minimized) : 새로운 프레임이 기존 프레임을 완전히 덮으면 기존 프레임은 최소화 되면 화면에서 사라진다. (예: 홈키가 눌렸을 경우, 다른 UI애플리케이션이 실행되었을 경우) 최소화 상태가 되면 3D또는 애니메이션 작업과 같은 그래픽 처리는 중단되어야 하며 불필요한 리소스는 해제되어야 하고 미디어 처리와 센서 관리는 중단되어야 한다.  따라서 최소화 상태에서 다시 활성화 상태가 되면 중단되었던 작업들이 재시작되어야 한다.
4. 파괴화 상태(Destructed) : Tizen::App::App 클래스의 Terminate()메소드가 호출되거나 시스템의 리소스(메모리 또는 배터리 파워)가 부족한 경우 앱이 종료될 수 있다.  앱의 종료는 OnAppTerminating()이벤트 핸들러에 의해서 관리된다.

Posted by 모바일헌터