使用Handler進行實現,在onKeyDown裏面只需要發送一條消息,其他操作全交給handleMessage去處理就ok。
首先,定義Handler及事件和等待時長:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
private static
final
int
MSG_EXIT = 1 ; private static
final
int
MSG_EXIT_WAIT = 2 ; private static
final
long
EXIT_DELAY_TIME = 2000 ; private Handler
mHandle = new Handler()
{ public void
handleMessage(Message msg) { switch (msg.what)
{ case MSG_EXIT: if (mHandle.hasMessages(MSG_EXIT_WAIT))
{ finish(); } else { Toast.makeText(MainActivity. this , "再按一次返回鍵退出" ,
Toast.LENGTH_SHORT).show(); mHandle.sendEmptyMessageDelayed(MSG_EXIT_WAIT,
EXIT_DELAY_TIME); } break ; case MSG_EXIT_WAIT: break ; } } }; |
其次,重載onKeyDown:
1
2
3
4
5
6
7
8
|
@Override public boolean
onKeyDown( int keyCode,
KeyEvent event) { if (KeyEvent.KEYCODE_BACK
== keyCode) { mHandle.sendEmptyMessage(MSG_EXIT); return true ; } return super .onKeyDown(keyCode,
event); } |