새로운 글
새로운 덧글

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

관련글


번호 제목 글쓴이 날짜 조회 수
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 관리자 2017.02.06 1116
공지 이 달의 기술자료 & 기술레터 관리자 2017.02.06 359
공지 데브기어 강의 - 2017년 11월~2017년 12월 관리자 2015.01.22 5643
공지 RAD Studio(Delphi, C++Builder) 시작하기 관리자 2015.06.30 9037
공지 RAD 스튜디오로 개발된 모바일 앱 사례(17년 6월 26일 업데이트) 험프리 2014.01.16 146528
106 [개발자 Tip] 모바일 앱 개발 시 시간 낭비를 줄이는 Tip #1: 테스트하기 위해 기다리는 시간을 줄인다. 관리자 2016.12.26 364
105 [XE8] 모바일 튜토리얼 무료 다운로드(영문), 총 364페이지 관리자 2015.07.09 1056
104 [XE8] 스피드버튼의 이미지를 크게 표시할 수 있습니다. Humphery 2015.06.04 442
103 앱의 상태바(StatusBar) 제어하기(색상변경, 감추기, 투명하게) Humphery 2015.06.04 1087
102 파이어몽키에서 외부 라이브러리 연동하기(jar, so, a) [2] Humphery 2015.04.14 1630
101 [XE8] Android 단말기 연결안될때 SDK 확인 및 설치 Humphery 2015.04.11 1527
100 모바일 앱 라이프사이클 이벤트 처리하기 Humphery 2015.04.09 883
» 모바일 앱 라이프 사이클 이벤트 처리하기(앱 완전 구동 후 실행하기) [1] Humphery 2015.04.09 631
98 [XE7] iOS 시뮬레이터 배포 시 'Please specify exact device preset UUID.' 오류 대응 Humphery 2015.02.26 1266
97 안드로이드 하드웨어 백버튼 제어하기 Humphery 2015.02.25 1325
96 파이어몽키 용 그리드 컴포넌트 안내 - FirePower Humphery 2015.02.23 1096
95 [Android] 폰번호 가져오기 [1] 타락천사 2014.09.05 14843
94 안드로이드 각종 설정값 제어 예제. c2design 2014.08.14 1705
93 Find the O/S Language Type c2design 2014.07.30 1452
92 QR 코드를 만들고 스캔(읽는) 방법 Humphery 2014.07.24 4046
91 GPS좌표 이용 날씨정보앱 런칭. file c2design 2014.07.15 2139
90 모바일 Bluetooth 연동 자료 Humphery 2014.06.24 5725
89 모바일(안드로이드, iOS) 연락처에 접근하는 방법 Humphery 2014.06.20 3013
88 사다리게임 소스와 함께 오픈(iOS, 구글 마켓 등록완료) [2] file c2design 2014.05.27 5702
87 RAD 스튜디오 모바일 개발 환경 설정(안드로이드, iOS) [1] file 험프리 2014.05.19 7224


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