Android 實現點選兩次BACK鍵退出應用
Android中捕獲使用者按鍵是在onKeyDown方法中,只需要判斷使用者按鍵是否是KEYCODE_BACK即後退鍵即可,剩下的即為判斷兩次點選BACK鍵時間間隔問題了。要注意的是每個Activity 要及時關閉相應的Activity,不然不管用,會調到跳到以前的Activity
package com.example.clickexittest;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.Toast;
public class MainActivity extends Activity {
private static final String TAG = MainActivity_Exit.class.getSimpleName();
// 定義一個變數,來標識是否退出
private static boolean isExit = false;
private static Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
isExit = false;
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
exit();
return true;
}
return super.onKeyDown(keyCode, event);
}
private void exit() {
if (!isExit) {
isExit = true;
Toast.makeText(getApplicationContext(), "再按一次後退鍵退出程式",
Toast.LENGTH_SHORT).show();
// 利用handler延遲傳送更改狀態資訊
mHandler.sendEmptyMessageDelayed(0, 2000);
} else {
Log.e(TAG, "exit application");
this.finish();
}
}
}
在exit方法中,會首先判斷isExit的值,如果為false的話,則置為true,同時會彈出提示,並在2000毫秒(2秒)後發出一個訊息,在Handler中將此值還原成false。如果在傳送訊息間隔的2秒內,再次按了BACK鍵,則再次執行exit方法,此時isExit的值已為true,則會執行退出的方法。
package com.example.clickexittest;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.Toast;
public class MainActivity extends Activity {
private static final String TAG = MainActivity.class.getSimpleName();
private long clickTime = 0;
//記錄第一次點選的時間
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
exit();
return true;
}
return super.onKeyDown(keyCode, event);
}
private void exit() {
if ((System.currentTimeMillis() - clickTime) > 2000) {
Toast.makeText(getApplicationContext(), "再按一次後退鍵退出程式",
Toast.LENGTH_SHORT).show();
clickTime = System.currentTimeMillis();
} else {
Log.e(TAG, "exit application");
this.finish();
// System.exit(0);
}
}
}
相關文章
- 兩次點選BACK鍵退出應用的效果
- Android實現點選兩次返回鍵和長按返回鍵退出應用實踐Android
- Cordova + Vue 實現點選兩次退出應用Vue
- Android 點選兩次返回鍵退出程式Android
- Android主介面連續兩次點選物理返回鍵退出應用功能實現Android
- Android實現首次點選返回鍵提示資訊,第二次點選退出應用Android
- AndroidStudio點選兩次返回鍵,退出APPAndroidAPP
- 點選兩次返回退出程式
- mui退出軟體點選兩次提示UI
- android短影片開發,點選兩次實現不同點選效果的實現方式Android
- Android之點選兩次才響應onclick方法Android
- Android 應用技巧: 手把手教你 優雅實現 “一鍵退出 App”AndroidAPP
- android 再按一次退出應用 出現閃屏 重啟Android
- Android開發之連續點選返回鍵退出程式Android
- QuitAll for Mac(應用程式一鍵退出)UIMac
- 如何一鍵退出所有應用程式?
- Android應用程式完全退出Android
- 用Kotlin實現Android點選事件的方法KotlinAndroid事件
- android設定軟鍵盤搜尋鍵以及監聽搜尋鍵點選時發生兩次事件的問題解決Android事件
- jquery實現的右鍵滑鼠點選事件jQuery事件
- Android退出應用最優雅的方式Android
- 點選label執行兩次的bug
- jQuery如何實現點選Enter鍵觸發事件jQuery事件
- VC實現動畫應用兩則 (轉)動畫
- android 安全退出應用程式的幾種方法Android
- EditText點選外部退出編輯
- jQuery實現的點選Enter鍵觸發指定事件jQuery事件
- 點選左右方向鍵實現翻頁效果
- Android實現人人網點選“+”彈出效果Android
- Android應用開發完全退出程式的通用方法!!!Android
- Flutter實現點選空白區域隱藏軟鍵盤Flutter
- 針對IOS頁面縮放,需要點選兩次才能選中iOS
- 點選方向鍵實現文字框焦點切換程式碼例項
- 進入與退出應用 / 登入與退出
- 使用Cordova –實現點選手機物理返回鍵時,應用進入後臺執行,而不是直接關閉!
- Android退出應用最優雅的方式(改進版)Android
- 最優雅退出 Android 應用程式的 6 種方式Android
- 進入與退出應用