Bladeren bron

add(back press): add back press toast

zhaoyadi 1 jaar geleden
bovenliggende
commit
221803f717
1 gewijzigde bestanden met toevoegingen van 23 en 1 verwijderingen
  1. 23 1
      app/src/main/java/com/zaojiao/app/MainActivity.kt

+ 23 - 1
app/src/main/java/com/zaojiao/app/MainActivity.kt

@@ -6,6 +6,8 @@ import android.os.Build
 import android.os.Bundle
 import android.util.Log
 import android.view.WindowManager
+import android.widget.Toast
+import androidx.activity.OnBackPressedCallback
 import androidx.activity.compose.setContent
 import androidx.compose.foundation.isSystemInDarkTheme
 import androidx.compose.material3.MaterialTheme
@@ -29,6 +31,7 @@ import dagger.hilt.android.AndroidEntryPoint
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.MainScope
 import kotlinx.coroutines.cancel
+import kotlinx.coroutines.delay
 import kotlinx.coroutines.flow.collect
 import kotlinx.coroutines.launch
 import java.util.concurrent.CompletableFuture
@@ -43,7 +46,7 @@ private val DarkBackgroundTheme = BackgroundTheme(color = Color.Black)
 @AndroidEntryPoint
 class MainActivity : FragmentActivity(), ITokenRequest, CoroutineScope by MainScope() {
     companion object {
-        private val tokenFlag = 99
+        private const val tokenFlag = 99
         private val requests = ConcurrentHashMap<Int, CompletableFuture<TokenModel?>>()
         private val nextRequestCode = AtomicInteger(0)
     }
@@ -53,12 +56,31 @@ class MainActivity : FragmentActivity(), ITokenRequest, CoroutineScope by MainSc
     @Inject
     public lateinit var authRepository: AuthRepository
 
+    private val onBackPressedCallback = object : OnBackPressedCallback(true) {
+        private var lastTimeMillis: Long = 0L
+
+        override fun handleOnBackPressed() {
+            val currentTimeMillis = System.currentTimeMillis()
+
+            if (currentTimeMillis - lastTimeMillis > 2000) {
+                Toast.makeText(this@MainActivity, "再次点击退出应用", Toast.LENGTH_SHORT).show()
+                launch {
+                    isEnabled = false
+                    delay(2000)
+                    lastTimeMillis = currentTimeMillis
+                    isEnabled = true
+                }
+            }
+        }
+    }
+
     override fun onCreate(savedInstanceState: Bundle?) {
         AuthUtils.attach(this)
         super.onCreate(savedInstanceState)
         configureSystemBar()
 
         getSystemService(BatteryManager::class.java)
+        onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
 
         launch {
             authRepository.state.collect {