1.變數初始化:
private boolean isExit = false; private boolean hasTask = false;
2.按鍵捕捉(比如放在onTouchDown函數中進行按鍵監聽
PressHomeKeyCount localHandler = new PressHomeKeyCount();if(isExit == false ) { isExit = true;if(!hasTask) {Message localMessage = new Message();localMessage.what = 0;localHandler.sendEmptyMessageDelayed(localMessage.what, 500L);}else{if(mRecentApplication.getVisibility() == View.VISIBLE){mRecentApplication.setVisibility(View.INVISIBLE);isExit = false;hasTask = false;}}}else{if(mRecentApplication.getVisibility() == View.INVISIBLE){mRecentApplication.setVisibility(View.VISIBLE);}}
3.Handle對象
public class PressHomeKeyCount extends Handler { public void handleMessage(final Message msg) { isExit = false; hasTask = true; } }
上邊的做法會出現死迴圈,我又對它進行了改進,以下是改進後的代碼,經過測試沒什麼問題,其中變數初始化一樣
2.按鍵捕捉
if(isExit == false ) { isExit = true; if(!hasTask) { Message localMessage = new Message(); localMessage.what = 0; localHandler.sendEmptyMessageDelayed(localMessage.what, 500L); } else{ isExit = false; hasTask = false; localHandler.removeMessages(0); if(mRecentApplication.getVisibility() == View.VISIBLE){ mRecentApplication.setVisibility(View.INVISIBLE); } } } else{ if(mRecentApplication.getVisibility() == View.INVISIBLE){mRecentApplication.setVisibility(View.VISIBLE);}localHandler.removeMessages(0); isExit = false; hasTask = true; }
3.Handler對象
public class PressHomeKeyCount extends Handler { public void handleMessage(final Message msg) { isExit = false; hasTask = false; } }