앱이 실행 후 바로 수행해야 하는 초기화 작업을 FormCreate에서 하게되면 앱의 구동시간이 길어집니다.(FormShow 이벤트도 앱이 구동 중 발생됩니다.)


앱이 완전히 구동된 이후 초기화 작업을 실행하려면 아래와 같이 처리할 수 있습니다.

(interface uses 절에 FMX.Platform 추가)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<p>unit Unit1;
 
interface
 
uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Platform;
 
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    FInit: Boolean;
    procedure InitData;
 
    function HandleAppEvent(AAppEvent: TApplicationEvent;
      AContext: TObject): Boolean;
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.fmx}
 
procedure TForm1.FormCreate(Sender: TObject);
var
  EventService: IFMXApplicationEventService;
begin
  FInit := False;
  if TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService, IInterface(EventService)) then
    EventService.SetApplicationEventHandler(HandleAppEvent)
  else
    InitData;
end;
 
function TForm1.HandleAppEvent(AAppEvent: TApplicationEvent;
  AContext: TObject): Boolean;
begin
  case AAppEvent of
    TApplicationEvent.FinishedLaunching,
    TApplicationEvent.BecameActive:
        InitData;
  end;
  Result := True;
end;
 
procedure TForm1.InitData;
begin
  if FInit then
    Exit;
 
  // 데이터 및 컨트롤 초기화
 
  FInit := True;
end;
 
end.</p>


참고로 FinishedLaunching 이벤트가 iOS에서 발생하지 않습니다. 그래서 iOS의 경우 BecameActive 이벤트를 이용해 초기화 진행했습니다.

BecameActive 이벤트는 앱 활성화 될 때 마다 발생하기 때문에 중복방지 코드(if FIni then Exit;)를 추가했습니다.

관련글


번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 23260
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 21601
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 23660
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 29501
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 30626
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 26007
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 46991
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 183010
26 안드로이드 각종 설정값 제어 예제. c2design 2014.08.14 1971
25 모바일 앱 라이프사이클 이벤트 처리하기 Humphery 2015.04.09 1622
24 [XE8] 모바일 튜토리얼 무료 다운로드(영문), 총 364페이지 관리자 2015.07.09 1618
23 [XE7] iOS 시뮬레이터 배포 시 'Please specify exact device preset UUID.' 오류 대응 Humphery 2015.02.26 1576
22 파이어몽키 용 그리드 컴포넌트 안내 - FirePower Humphery 2015.02.23 1474
21 [무료 제공툴] 파이어몽키 스텐실(FMX Stencils) [3] 관리자 2018.08.24 1247
» 모바일 앱 라이프 사이클 이벤트 처리하기(앱 완전 구동 후 실행하기) [1] Humphery 2015.04.09 988
19 [개발자 Tip] 모바일 앱 개발 시 시간 낭비를 줄이는 Tip #1: 테스트하기 위해 기다리는 시간을 줄인다. 관리자 2016.12.26 981
18 [XE8] 스피드버튼의 이미지를 크게 표시할 수 있습니다. Humphery 2015.06.04 800
17 10.2.3 새로운 기능: 파이어몽키 UI 템플릿 - 프로필 화면 관리자 2018.04.24 794
16 파이어몽키 TListBox 컴포넌트 사용방법: 사용자 정의 아이템데이터 동적으로 표시하기 file 김원경 2020.01.20 684
15 모바일 앱 개발, 가장 좋은 선택은? 관리자 2021.03.18 683
14 그라데이션이 적용된 멋진 스타일을 적용하고 싶다면 - 스텔라(Stellar) FMX 스타일 관리자 2019.09.17 680
13 파이어몽키를 사용하여 멀티 플랫폼/아키텍처 용 소프트웨어 개발 file 김원경 2020.03.25 675
12 밝은 톤의 사용자 친화적인 디자인을 찾고있다면 - 푸에르토 리코(Puerto Rico) FMX 스타일 관리자 2019.09.17 628
11 과감하면서도 볼드한 효과를 주고 싶다면 - Ruby Graphite FMX 스타일 관리자 2019.09.17 583
10 리눅스용 앱에 다양한 스타일 적용하기 (FMX 스타일들을 리눅스 앱에도!) 관리자 2019.09.17 582
9 FmxLinux - 델파이, RAD스튜디오에 추가되었습니다! 관리자 2019.06.26 561
8 iOS 앱스토어 1024x1024 아이콘 문제에 대한 해결 방법 김원경 2020.07.08 560
7 리눅스 앱에 '윈도우 10 컬러 스타일'을 적용하고 싶다면 - Aqua Graphite 스타일 관리자 2019.09.09 531