안드로이드폰을 사용하다가 무심결에 터치 버튼이 눌러져서
본의아니게 앱이 종료된 경험을 많은 사람들이 가지고 있을 것이다.
아래 소스는 앱 화면에서 'Back' 버튼을 눌렀을 때,
바로 앱이 종료되는 것이 아니라 종료를 위해서 다시 한번 'Back' 버튼을 눌러달라는 메시지를 띄워준다.
그리고는 지정된 시간(여기서는 2초) 이내에 다시 'Back' 버튼이 눌려지면 실제로 앱에서 빠져나오게 된다.
위의 예제를 실행한 후의 화면과 'Back' 버튼을 한번 눌른 상태의 모습...
본의아니게 앱이 종료된 경험을 많은 사람들이 가지고 있을 것이다.
아래 소스는 앱 화면에서 'Back' 버튼을 눌렀을 때,
바로 앱이 종료되는 것이 아니라 종료를 위해서 다시 한번 'Back' 버튼을 눌러달라는 메시지를 띄워준다.
그리고는 지정된 시간(여기서는 2초) 이내에 다시 'Back' 버튼이 눌려지면 실제로 앱에서 빠져나오게 된다.
01.
package
com.huikyun.tester;
02.
03.
import
java.util.Calendar;
04.
05.
import
android.app.Activity;
06.
import
android.os.Bundle;
07.
import
android.os.Handler;
08.
import
android.os.Message;
09.
import
android.widget.Toast;
10.
11.
public
class
BackKeyEventActivity
extends
Activity {
12.
private
static
final
String TAG =
"BackKeyEventActivity"
;
13.
14.
private
static
final
int
MSG_TIMER_EXPIRED =
1
;
15.
16.
private
static
final
int
BACKKEY_TIMEOUT =
2
;
17.
private
static
final
int
MILLIS_IN_SEC =
1000
;
18.
19.
private
boolean
mIsBackKeyPressed =
false
;
20.
private
long
mCurrTimeInMillis =
0
;
21.
22.
@Override
23.
public
void
onBackPressed() {
24.
// super.onBackPressed();
25.
26.
if
(mIsBackKeyPressed ==
false
) {
27.
mIsBackKeyPressed =
true
;
28.
29.
mCurrTimeInMillis = Calendar.getInstance().getTimeInMillis();
30.
31.
Toast.makeText(
this
,
"종료를 원하시면 다시 한 번 \"Back key\"를 눌러 주시기 바랍니다."
, Toast.LENGTH_SHORT).show();
32.
33.
startTimer();
34.
}
else
{
35.
mIsBackKeyPressed =
false
;
36.
37.
if
(Calendar.getInstance().getTimeInMillis() <= (mCurrTimeInMillis + (BACKKEY_TIMEOUT * MILLIS_IN_SEC))) {
38.
finish();
39.
}
40.
}
41.
}
42.
43.
private
void
startTimer() {
44.
mTimerHandler.sendEmptyMessageDelayed(MSG_TIMER_EXPIRED, BACKKEY_TIMEOUT * MILLIS_IN_SEC);
45.
}
46.
47.
private
Handler mTimerHandler =
new
Handler() {
48.
@Override
49.
public
void
handleMessage(Message msg) {
50.
// super.handleMessage(msg);
51.
52.
switch
(msg.what) {
53.
case
MSG_TIMER_EXPIRED: {
54.
mIsBackKeyPressed =
false
;
55.
}
56.
57.
break
;
58.
}
59.
}
60.
};
61.
}
위의 예제를 실행한 후의 화면과 'Back' 버튼을 한번 눌른 상태의 모습...
|
|