Practice & Training/FireMonkey [C++ Builder]

안드로이드앱 back key 두번으로 종료하기...

klisty 2015. 2. 16. 09:48

처음엔 그냥 폰의 뒤로가기 버튼을 누르면 종료 되도록 하였으나, 같이 일하는 선임 분께서 요즘 앱들과 비슷하게 하라고 하셔서 변경하였다. 그런데 여기서 문제는 시간같은 것을 정해 주지 않으면 뒤로가기 키를 한번 누르고, 한참 후에 뒤로가기를 하면 그것을 두번째 키로 인식한다는 것이다. 그래서 시간을 추가하게 되었다.




우선 KeyUp 이벤트를 추가한다.



void __fastcall TFormMain::FormKeyUp(TObject *Sender, WORD &Key, System::WideChar &KeyChar, TShiftState Shift)

{

if( Key == vkHardwareBack ){

// key값 초기화

Key = 0;


}

}


그리고 if 부분 아래에 다음과 같이 추가를 하면 된다.




class 선언 부에는 다음과 같이하고,


#define AppExitTime (5)

bool   bExitChecker;

time_t   iExitTime;



메소드 정의부의 KeyUp 이벤트에는 다음과 같이한다.


if( bExitChecker ){

if( (time(NULL) - iExitTime) < AppExitTime ) {  // 이미 얻은 시간에서 현재시간을 뺀다.

FormMain->Close();  // app 종료

} else {

iExitTime = 0;

bExitChecker = false;

return;

}

} else {

time(&iExitTime);  // 현재 시간을 얻는다.

bExitChecker = true;

return;

}




여기서 쓰인 time의 사용은 두 가지이다.


iExitTime = time(NULL);

또는

time(&iExitTime);



그냥 간단한 것이지만 처음에 time을 어떻게 쓰는지 혼동되서 정리해 보았다.

(두가지 다 가능할 줄은;;;)




같이보면 좋은 정보 (delphi) : http://cafe.naver.com/delphifmx/634
참고 : http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=38935