앱이 실행 후 바로 수행해야 하는 초기화 작업을 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 17844
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 16205
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 18854
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 24425
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 25804
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 21165
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 41754
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 177060
26 David I의 31 XE3 퀵 비디오 - FM2 Ancors 프로퍼티, FlowLayout과 GridLayout 관리자 2012.10.12 5485
25 파이어몽키용 TMS 그리드의 간략한 소개 백서 관리자 2012.09.26 6874
24 3줄의 코드로 "움직이는 3D 컬러애벌레" 만들기 관리자 2012.07.12 6869
23 [세미나자료] 20120508 "Mac과 윈도우를 동시에… 동일한 소스코드로 멋지게 개발" file 관리자 2012.05.10 7329
22 앤더슨 올슨이 아이폰용 컴포넌트의 새버전을 오픈 했습니다. [3] file 관리자 2012.05.09 7398
21 파이어몽키와 VCL을 한 화면에서 함께 사용할 수 있는 방법을 설명한 동영상 [2] 관리자 2012.05.09 7576
20 파이어몽키를 이용해서 아이폰앱을 개발할때 스타일 바꾸기 관리자 2012.04.19 8983
19 FireMonkey Quick Start Guide now available on our DocWiki 관리자 2012.04.02 6017
18 Firemonkey MAC OSX 에서 ComboBox 다운현상 [2] c2design 2012.03.28 8353
17 [참고] MAC OSX 에서 ExtractFileName 사용시 주의점. [1] c2design 2012.03.23 7733
16 [참고] MAC OSX 어플리케이션 프로젝트 경로 문제 [1] c2design 2012.03.23 8149
15 델파이 XE2 파이어몽키로 만든 아이폰 3D 매쉬 앱 file 박병일 2012.03.07 11639
14 VCL 폼을 파이어몽키 폼으로 바꿀수 있는 컨버터 프로그램 file 박병일 2012.03.01 8337
13 파이어 몽키 이퀼라이저 데모 동영상 박병일 2012.02.06 10066
12 파이어몽키 써드파티 라이브러리 ApeSuite file 박병일 2012.02.06 9119
11 파이어몽키 3D Text Editor file 박병일 2012.02.06 13927
10 파이어몽키를 이용하여 당구 게임을 시뮬레이션한 데모 file 박병일 2012.02.06 10655
9 파이어 몽키를 이용한 공학 계산과 그래프 박병일 2012.01.28 11436
8 파이어몽키 기반의 아이폰앱 개발에서 주소록 가져오기 박병일 2012.01.25 14452
7 델파이XE2 파이어몽키 기반 아이폰앱 개발에서 제스춰를 인식시키는 방법 박병일 2012.01.25 23284