Tizen Native App을 개발하기 위해서는 App이 어떻게 실행되는지에 대해 알아야하는 중요한 부분입니다.
그럼 Tizen Native App은 어떻게 실행되는지에 대한 Life-Cycle에 대해 설명하겠습니다.
1.Tizen App Life-Cycle
Tizen App Life-Cycle은 그림1과 같이 구성되어 있습니다. 그림1을 보듯이 5가지의 콜백으로 Tizen App은 실행이 되어집니다.
5가지의 콜백은 다음과 같이 구성되어있습니다.
<그림1. Tizen App Life-Cycle>
① app_create
· 프로세스가 시작 될 때 호출됩니다.
· 프로세스가 시작되고 첫번째 명령으로 app_create에서 UI를 구성하는 것이 좋습니다.
② app_control
· 프로세스가 시작될 때 app_create 후에 호출되거나 프로세스가 running중에 실행 요청이 있을 경우 호출됩니다.
· 다른 App이 해당 App을 Launch 요청시 app_control 콜백 함수가 호출됩니다.
· 파라미터를 통해 App_control 데이터를 수신할 수 있습니다.
· ex) 다른 App과 연동되어 있는 App이 있다고 예를 들겠습니다.
App(1)과 App(2)가 있습니다. App(2)는 App(1)과 연동이 되어 App(1)에서 실행이 가능합니다. 또한, 홈에서도 직접 실행이 가능합니다.
그러므로 App(2)는 홈에서 직접 실행, App(1)에서 호출 두 가지 방법으로 실행시킬 수 있는 App입니다.
App(2)는 홈에서 직접 실행될때랑, App(1)에서 호출되어 실행할 경우 다른 이벤트를 실행된다고 가정하겠습니다.
이때 App(2)를 app_control을 통해 홈에서 실행하였는지, App(1)에서 실행하였는지 파라미터를 통해 정보를 보낼 수 있습니다.
즉, App(2)는 app_control를 통해 어디서 실행을 호출하였는지 알 수 있어 해당되는 이벤트 또는 화면 구성 등을 할 수 있습니다.
③ app_resume(UI 어플리케이션에만 적용)
· 어플리케이션의 window가 화면에 출력될 때 호출됩니다.
④ app_pause(UI 어플리케이션에만 적용)
· 어플리케이션의 window가 화면에 출력되지 않을 때 호출됩니다.
⑤ app_terminate
· 어플리케이션의 프로세스가 종료되는 동안 호출됩니다.
· Main Loop 종료.
※ Tizen Natieve App은 UI가 없는 Service App 개발도 가능합니다. app_pause와 app_resume은 window와 함께 동작하는 피쳐이기 때문에
service App에서는 호출되지 않습니다.
2. Tizne Native App Life-Cycle FlowChart
<그림2. Tizen Application Life_Cycle FlowChart>
Tizen App은 UI App과 UI가 없는 Service App 두가지를 구성할 수 있습니다.
모든 App은 그림2의 왼쪽 프레임의 기본적인 Life-Cycle을 가지게 됩니다.
UI App의 경우, 추가적으로 그림2의 오른쪽 프레임의 Life-Cycle이 추가 생성되며 AddFrame()메소드가 호출 될 때 초기화 됩니다.
App이 실행되면 OnAppInitializing() 이벤트가 호출되고 이때 AddFrema() 메소드를 통해 그림2의 우측 프레임이 추가되어 초기화( OnIntializing() ) 및 생성됩니다. 만약 OnAppInitializing() 이벤트가 실패하면 App은 강제종료가됩니다.
App이 초기화에 성공하면, App은 running 상태가 되며, Event를 수행할 수 있습니다.
요약하자면,
App 실행 -> App 초기화 -> Frame 생성 -> App running 상태 -> 제거(App 종료)
로 볼 수 있습니다.
※ App이 종료되는 경우
① OnAppInitializing() 이벤트의 실패로 False가 반환되는 경우(AddFrame 실패)
② 시스템자원이 부족할 경우
③ Running 상태에서 디바이스의 End버튼을 클릭하는 경우
④ OnAppTerminating()가 호출되는 경우
이상으로 이번 포스터를 마치겠습니다.
Life-Cycle을 잘 이해하신다면 Tizen Native App 개발에 정말 많은 도움이 될 수 있습니다.
감사합니다.
Prepared by : 신재규