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);
}
}
}
相關文章
- Cordova + Vue 實現點選兩次退出應用Vue
- Android主介面連續兩次點選物理返回鍵退出應用功能實現Android
- AndroidStudio點選兩次返回鍵,退出APPAndroidAPP
- android短影片開發,點選兩次實現不同點選效果的實現方式Android
- Android之點選兩次才響應onclick方法Android
- android 再按一次退出應用 出現閃屏 重啟Android
- 用Kotlin實現Android點選事件的方法KotlinAndroid事件
- 如何一鍵退出所有應用程式?
- QuitAll for Mac(應用程式一鍵退出)UIMac
- 點選label執行兩次的bug
- Android應用加固的簡單實現方案Android
- Flutter實現點選空白區域隱藏軟鍵盤Flutter
- 註冊登入要點選兩次終極方案
- 使用Cordova –實現點選手機物理返回鍵時,應用進入後臺執行,而不是直接關閉!
- 針對IOS頁面縮放,需要點選兩次才能選中iOS
- Qt右鍵選單實現QT
- iOS全埋點解決方案-應用退出和啟動iOS
- Android應用加固的簡單實現方案(二)Android
- Android Studio 常用快捷鍵(超實用!!!)Android
- MAUI Blazor學習16-連續按BACK退出APPUIBlazorAPP
- Android應用安全防護的點點滴滴Android
- weex生成的單頁應用嵌入app中,點選物理返回鍵時如何返回上一個路由頁面,而不是直接退出單頁應用,回到原生app頁面APP路由
- Android快應用實踐Android
- flutter_xupdate 一鍵實現Flutter應用版本更新Flutter
- 點選一百萬次
- Android開發 如何使用選擇器(selector) 來實現點選按鈕變色Android
- Android 應用防止被二次打包指南Android
- Android端實現多人音視訊聊天應用(一)Android
- 怎樣用純CSS實現禁止滑鼠點選事件?CSS事件
- Android入門教程 | RecyclerView響應子項點選AndroidView
- android 7.1 遮蔽按壓兩次電源鍵(KEYCODE_POWER)開啟相機Android
- 超實用Mac快捷鍵盤點Mac
- Android應用保活實踐Android
- Android按下返回鍵,將應用退到後臺Android
- android開發透過wireshark實現flutter應用抓包AndroidFlutter
- deeplink跳轉快應用返回出現兩次系統新增桌面的彈框
- 夸克APP端智慧:文件關鍵點檢測實踐與應用APP
- Android Button 點選效果Android
- checkbox及css實現點選下拉選單CSS