diff --git a/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt b/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
index 39de86e..f3b9eb2 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
@@ -60,6 +60,7 @@
     private val pos = SPApplication.getInstance().getPos()
     private var beepManager: BeepManager? = null
     private val scanLock = ReentrantLock()
+    private var appreboottime: Long = 0
 
     @Volatile
     private var cardPaying = false
@@ -189,6 +190,16 @@
     override fun dispatchKeyEvent(event: KeyEvent): Boolean {
         if (event.action == KeyEvent.ACTION_DOWN) {
             presenter.resetOperationTime()
+            if (event.keyCode == KeyEvent.KEYCODE_DPAD_UP) {
+                //F2 连续按重启app
+                val tt = System.currentTimeMillis()
+                if (tt - appreboottime < PublicDef.APP_REBOOT_GAP) {
+                    CommonUtil.restartAPP(this)
+                } else {
+                    appreboottime = tt
+                }
+                return super.dispatchKeyEvent(event)
+            }
             when (payMode) {
                 PayMode.FIXPAY -> fixInputPay(event.keyCode)
                 PayMode.HOTKEY -> hotkeyInputPay(event.keyCode)
diff --git a/app/src/main/java/com/supwisdom/utils/PublicDef.kt b/app/src/main/java/com/supwisdom/utils/PublicDef.kt
index f0d22d9..9a6db16 100644
--- a/app/src/main/java/com/supwisdom/utils/PublicDef.kt
+++ b/app/src/main/java/com/supwisdom/utils/PublicDef.kt
@@ -84,6 +84,7 @@
     const val CAMERA_FIX_PAY_PERIOD: Long = 30 * 60 * 1000
     const val APP_GC_PERIOD: Long = 10 * 60 * 1000
     const val APP_GC_SYNO_PERIOD: Long = 6 * 60 * 60 * 1000
+    const val APP_REBOOT_GAP: Long = 500
 
     /**
      * 本地全局控制参数
diff --git a/app/src/main/java/com/supwisdom/view/DialogPurchase.kt b/app/src/main/java/com/supwisdom/view/DialogPurchase.kt
index 4566945..b536dd1 100644
--- a/app/src/main/java/com/supwisdom/view/DialogPurchase.kt
+++ b/app/src/main/java/com/supwisdom/view/DialogPurchase.kt
@@ -41,6 +41,7 @@
     private val waitTime = 60
     private var syPreview: Preview? = null
     private var payQueryConfirm = false
+    private var appreboottime: Long = 0
     var codePayingNoCancelEnable = false
     var codePaying = false
     var isFixPay = false
@@ -171,6 +172,16 @@
 
     override fun dispatchKeyEvent(event: KeyEvent): Boolean {
         if (event.action == KeyEvent.ACTION_DOWN) {
+            if (event.keyCode == KeyEvent.KEYCODE_DPAD_UP) {
+                //F2 连续按重启app
+                val tt = System.currentTimeMillis()
+                if (tt - appreboottime < PublicDef.APP_REBOOT_GAP) {
+                    CommonUtil.restartAPP(context)
+                } else {
+                    appreboottime = tt
+                }
+                return super.dispatchKeyEvent(event)
+            }
             if (codePayingNoCancelEnable) {
                 return super.dispatchKeyEvent(event)
             }
