새로운 글
새로운 덧글

앱이 실행 후 바로 수행해야 하는 초기화 작업을 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;)를 추가했습니다.

관련글


번호 제목 글쓴이 날짜 조회 수
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 3566
공지 이 달의 기술자료 & 기술레터 관리자 2017.02.06 640
공지 [프로그래밍 강의] 2018.8 ~ 2018.11 관리자 2015.01.22 6199
공지 RAD Studio(Delphi, C++Builder) 시작하기 관리자 2015.06.30 11088
공지 RAD 스튜디오로 개발된 모바일 앱 사례(17년 12월 13일 업데이트) 험프리 2014.01.16 148153
108 10.2.3 새로운 기능: 파이어몽키 UI 템플릿 - 프로필 화면 관리자 2018.04.24 243
107 TFrame의 생성 및 해제를 편하게 해주는 TFrame 관리 클래스입니다.. file 푸른솔 2017.12.15 307
106 [개발자 Tip] 모바일 앱 개발 시 시간 낭비를 줄이는 Tip #1: 테스트하기 위해 기다리는 시간을 줄인다. 관리자 2016.12.26 424
105 [XE8] 모바일 튜토리얼 무료 다운로드(영문), 총 364페이지 관리자 2015.07.09 1130
104 [XE8] 스피드버튼의 이미지를 크게 표시할 수 있습니다. Humphery 2015.06.04 462
103 앱의 상태바(StatusBar) 제어하기(색상변경, 감추기, 투명하게) Humphery 2015.06.04 1318
102 파이어몽키에서 외부 라이브러리 연동하기(jar, so, a) [3] Humphery 2015.04.14 1903
101 [XE8] Android 단말기 연결안될때 SDK 확인 및 설치 Humphery 2015.04.11 1581
100 모바일 앱 라이프사이클 이벤트 처리하기 Humphery 2015.04.09 990
» 모바일 앱 라이프 사이클 이벤트 처리하기(앱 완전 구동 후 실행하기) [1] Humphery 2015.04.09 644
98 [XE7] iOS 시뮬레이터 배포 시 'Please specify exact device preset UUID.' 오류 대응 Humphery 2015.02.26 1293
97 안드로이드 하드웨어 백버튼 제어하기 Humphery 2015.02.25 1412
96 파이어몽키 용 그리드 컴포넌트 안내 - FirePower Humphery 2015.02.23 1129
95 [Android] 폰번호 가져오기 [1] 타락천사 2014.09.05 18455
94 안드로이드 각종 설정값 제어 예제. c2design 2014.08.14 1726
93 Find the O/S Language Type c2design 2014.07.30 1456
92 QR 코드를 만들고 스캔(읽는) 방법 Humphery 2014.07.24 4180
91 GPS좌표 이용 날씨정보앱 런칭. file c2design 2014.07.15 2226
90 모바일 Bluetooth 연동 자료 Humphery 2014.06.24 5855
89 모바일(안드로이드, iOS) 연락처에 접근하는 방법 Humphery 2014.06.20 3071


광고 모듈이 설치되어 있지 않아 실행을 중단합니다..