뉴질랜드 다이어리(NZ Diary) 라빠
Tizen Native Application Lifecycle 본문
자동으로 생성되는 UI Application 을 통해 Tizen Native Application 의 Life Cycle 을 알아봅시다.
int
main(int argc, char *argv[])
{
appdata_s ad = {0,};
int ret = 0;
ui_app_lifecycle_callback_s event_callback = {0,};
app_event_handler_h handlers[5] = {NULL, };
event_callback.create = app_create;
event_callback.terminate = app_terminate;
event_callback.pause = app_pause;
event_callback.resume = app_resume;
event_callback.app_control = app_control;
ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, ui_app_low_battery, &ad);
ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, ui_app_low_memory, &ad);
ui_app_add_event_handler(&handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED], APP_EVENT_DEVICE_ORIENTATION_CHANGED, ui_app_orient_changed, &ad);
ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, ui_app_lang_changed, &ad);
ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, ui_app_region_changed, &ad);
ui_app_remove_event_handler(handlers[APP_EVENT_LOW_MEMORY]);
ret = ui_app_main(argc, argv, &event_callback, &ad);
if (ret != APP_ERROR_NONE) {
dlog_print(DLOG_ERROR, LOG_TAG, "app_main() is failed. err = %d", ret);
}
return ret;
}
앱이 최초 구동되는 시점에, 위와 같이 다섯개의 callback 을 등록하는것을 볼 수 있습니다.
각각 Application 의 life cycle 에 따라 system 에서 호출되게 됩니다.
create : 앱이 최초 Folk 되고, mainloop 에 진입하기 직전에 호출됩니다. sample app 에서와 같이, base gui 를 생성해 주거나, 초기 리소스로딩등을 수행하게 됩니다.
terminate : 앱이 종료될때 한번 호출됩니다. 사용한 메모리를 정리하는 작업이 주요 업무가 되겠네요.
pause : 앱이 화면에서 사라질때 호출됩니다. Multi-tasking 을 통해 다른 앱이 실행되는 등의 상황에서 호출되겠죠. 만약의 상황을 대비하여, 진행중인 내용들을 임시 저장하는것이 좋습니다.
resume : 앱이 화면을 점유할때 호출됩니다. 다른앱에 의한 점유이후 회복할때뿐 아니라, 최초에도 호출된다는점을 잊지 마세요.
app_control : 위의 네개가 일반적인 반면, Tizen 에 존재하는 특이한 Callback 입니다. 앱을 실행하는 측에서 실행되는 앱에 특정 정보를 전달하고자 할때, 이 데이터가 포함되어 호출됩니다. 이에 대한 자세한 내용은 추후 다시 설명하기로 하죠.
Sample Application 을 실행해보면, 아래와 같은 순서로 위에서 등록한 callback 들이 호출되는것을 알 수 있습니다.
create -> app_control -> [resume -> pause] 반복 -> terminate
Application 의 life cycle 을 알아야 하는 목적은 앱의 구동시간을 최적화하거나, 사용자의 사용성을 개선하는데 꼭 필요하기 때문입니다!
또 만나요!
'개발' 카테고리의 다른 글
[Xamarin.Forms] RatingStars Component (0) | 2016.05.10 |
---|---|
[Xamarin.Forms] Paypal 이용하기 (0) | 2016.05.10 |
Tizen SDK 설치 (0) | 2015.06.29 |
Android 에서 사용가능한 Game Engine 목록 (0) | 2015.05.12 |
Windows Batch File 만들기 (0) | 2015.05.06 |