앱이 실행 후 바로 수행해야 하는 초기화 작업을 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 15441
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13962
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16499
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22055
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23268
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18923
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39257
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174713
923 [개발 예제] 웹 소켓 서버&클라이언트 채팅 프로그램 관리자 2021.06.08 2330
922 [윈도우10] 델파이로 윈도우10 알림 표시하기(WinRT API 이용) Humphery 2015.06.24 2314
921 [고객 사례- 의료, 델파이] 전북대학교 병원 file 관리자 2015.03.09 2309
920 [기술문서] 실전 DataSnap! [2] 관리자 2014.09.02 2309
919 26년, 델파이 이야기 관리자 2021.02.17 2291
918 파이어몽키에서 Message 대화상자 사용하기/Message 대화상자와 유사하게 폼 사용하기 file 김원경 2020.01.23 2291
917 TEdgeBrowser에서 스크립트 실행하기와 소스 보기 관리자 2021.06.22 2285
916 "가장 빠른 모바일 앱 개발! 가장 쉬운 멀티플랫폼 개발!" 세미나 발표자료입니다. 관리자 2014.03.12 2204
915 FastReport 4 VCL(Embarcadero Edition) 설치 오류 우회방법 Humphery 2014.07.15 2194
914 [REST API][실습] 데이터셋 기반 REST API 개발하기 험프리 2017.06.13 2177
913 [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 16. 무작위 숫자들, 상수들, 사용자 타입들 관리자 2019.03.29 2172
912 RAD Studio 사물인터넷 참고자료와 샘플 모음 file Humphery 2015.06.23 2170
911 [따라하기] Advanced 델파이 UI 작성하기 file 험프리 2019.09.11 2141
910 [따라하기] 인공지능 오목게임(4) - 바둑판 그리기 [2] file 대화마을 2017.09.18 2132
909 [베를린] ListView 레이아웃을 입맛에 맞게 변경할 수 있습니다. file 험프리 2016.04.22 2125
908 [FireDAC Skill Sprints] 7. FireDAC ETL: 데이터 내보내기, 가져오기 기능 구현하기 Humphery 2015.04.01 2122
907 [XE7] 다양한 형태로 표시되는 적응형 컴포넌트 TMultiView 소개 Humphery 2014.09.18 2092
906 웹사이트의 인증서 오류를 무시하고 http 결과 조회하기(WinInet 이용) Humphery 2015.03.06 2092
905 리눅스 서버용 GUI 응용프로그램 만들기(10.2 도쿄 & FMXLINUX 이용) [1] 관리자 2017.04.25 2082
904 RAD 스튜디오로 유스케이스 다이어그램 작성방법 file 험프리 2019.06.20 2065