Firemonkey 모바일 앱 라이프사이클 이벤트 처리하기
2015.04.09 20:28
애플리케이션 이벤트핸들러를 등록하면 앱의 라이프 사이클 이벤트를 수신할 수 있습니다.
먼저 상단(interface) uses절에 FMX.Platform을 추가 후 이벤트 수신 용 이벤트를 아래와 같이 작성합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | function TForm1 . AppEventHandler(AAppEvent: TApplicationEvent; AContext: TObject): Boolean ; begin Result := False ; case AAppEvent of TApplicationEvent . FinishedLaunching: Log . d( 'FinishedLaunching' ); TApplicationEvent . BecameActive: Log . d( 'BecameActive' ); TApplicationEvent . WillBecomeInactive: Log . d( 'WillBecomeInactive' ); TApplicationEvent . EnteredBackground: Log . d( 'EnteredBackground' ); TApplicationEvent . WillBecomeForeground: Log . d( 'WillBecomeForeground' ); TApplicationEvent . WillTerminate: Log . d( 'WillTerminate' ); TApplicationEvent . LowMemory: Log . d( 'LowMemory' ); TApplicationEvent . TimeChange: Log . d( 'TimeChange' ); TApplicationEvent . OpenURL: Log . d( 'OpenURL' ); end ; end ; |
메인 폼 생성 시 이벤트 핸들러를 등록(SetApplicationEventHandler)합니다.
1 2 3 4 5 6 7 8 9 | procedure TForm1 . FormCreate(Sender: TObject); var AEService: IFMXApplicationEventService; begin if TPlatformServices . Current . SupportsPlatformService(IFMXApplicationEventService, IInterface(AEService)) then begin AEService . SetApplicationEventHandler(AppEventHandler); end ; end ; |
아래 이벤트를 참고해 필요한 항목에 이벤트 발생 시 코드를 추가하세요.
애플리케이션 이벤트 플랫폼 별 지원 여부
이벤트 | 설명 | 안드로이드 지원 | iOS 지원 |
BecomeActive | 애플리케이션이 활성화 되었습니다. | 지원 | 지원 |
EnteredBackground | 애플리케이션이 백그라운드로 진입했습니다. | 지원 | 지원 |
FinishedLaunching | 애플리케이션이 시작되었습니다. | 지원 | 지원 |
LowMemory | 디바이스 메모리가 부족하다는 경고입니다. 내부 메모리 사용량을 줄이세요. | 지원 | 지원 |
OpenURL | url 요청을 받았습니다. | X | 지원 |
TimeChange | 시간에 큰 변화가 발생. 하루가 바뀐 경ㅇ나 서머타임이 시작 또는 끝난 경우 발생 | X | 지원 |
WillBecomeForeground | 백그라운드의 애플리케이션이 활성화 되었습니다. | 지원 | 지원 |
WillBecomeInactive | 다른 애플리케이션이 활성화 되었습니다. | 지원 | 지원 |
WillTerminate | 사용자가 애플리케이션을 종료합니다. | 지원 | 지원 |
안드로이드 라이프사이크
http://developer.android.com/reference/android/app/Activity.html
iOS 라이프사이크
https://developer.apple.com/library/ios/documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html