From 0c990ea7ee90b64e560d9e7e12130eca5333242a Mon Sep 17 00:00:00 2001
From: lvmeng <848755140@qq.com>
Date: Wed, 11 Feb 2026 14:48:30 +0800
Subject: [PATCH] =?UTF-8?q?=E6=89=93=E5=BC=80=E5=A2=9E=E5=8A=A0=E6=A3=80?=
=?UTF-8?q?=E6=9F=A5=E7=BD=91=E7=BB=9C=E6=83=85=E5=86=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/AndroidManifest.xml | 1 +
.../sw/dualscreen/activity/InitActivity.kt | 91 ++++++++++++++++---
.../sw/dualscreen/activity/MainActivity.kt | 8 +-
.../java/com/sw/dualscreen/ext/CommonExt.kt | 33 +++++--
.../sw/dualscreen/viewmodel/UserViewModel.kt | 24 ++---
app/src/main/res/drawable/bg_init_button.xml | 14 ++-
app/src/main/res/layout/activity_init.xml | 12 +--
7 files changed, 136 insertions(+), 47 deletions(-)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f9f5f13..690caab 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,7 @@
+
diff --git a/app/src/main/java/com/sw/dualscreen/activity/InitActivity.kt b/app/src/main/java/com/sw/dualscreen/activity/InitActivity.kt
index 9147337..e345a06 100644
--- a/app/src/main/java/com/sw/dualscreen/activity/InitActivity.kt
+++ b/app/src/main/java/com/sw/dualscreen/activity/InitActivity.kt
@@ -1,16 +1,22 @@
package com.sw.dualscreen.activity
import android.content.Intent
+import android.os.CountDownTimer
import androidx.activity.viewModels
import androidx.lifecycle.lifecycleScope
import com.sw.dualscreen.GlobalData
import com.sw.dualscreen.databinding.ActivityInitBinding
+import com.sw.dualscreen.dialog.RemindDialog
+import com.sw.dualscreen.ext.clickWithDebounce
+import com.sw.dualscreen.ext.visible
import com.sw.dualscreen.model.response.FoodVector
import com.sw.dualscreen.objbox.Food
import com.sw.dualscreen.objbox.FoodModule
import com.sw.dualscreen.objbox.ObjectBox
+import com.sw.dualscreen.utils.L
import com.sw.dualscreen.viewmodel.BaseViewModel
import com.sw.dualscreen.viewmodel.UserViewModel
+import com.sw.plate.utils.AppUtil
import kotlinx.coroutines.launch
class InitActivity : BaseActivity() {
@@ -37,7 +43,11 @@ class InitActivity : BaseActivity() {
"version" to GlobalData.foodModelVersion
)
) { items ->
- val list = items ?: emptyList()
+ if (items == null) {
+ getVectorErrorDialog()
+ return@getCollectedFoodVector
+ }
+ val list = items
if (pageNum == 1 && list.isEmpty()) {
block()
return@getCollectedFoodVector
@@ -75,20 +85,13 @@ class InitActivity : BaseActivity() {
override fun initialize() {
super.initialize()
- showWaitingDialog("加载中……")
- lifecycleScope.launch {
- FoodModule.init(this@InitActivity) {
- getCollectedFoodVector {
- runOnUiThread {
- hideWaitingDialog()
- binding.root.postDelayed({
- goMainActivity()
- }, 1000)
- }
- }
- }
+ initNetworkTimer()
+ binding.okButton.clickWithDebounce(500) {
+ checkNetworkTimer?.cancel()
+ checkNetworkTimer?.start()
}
-
+ showWaitingDialog("网络连接中...")
+ checkNetworkTimer?.start()
// val isSuccess = viewModel.checkEquipmentInfo()
// if (isSuccess) {
@@ -116,9 +119,69 @@ class InitActivity : BaseActivity() {
// }
}
+ private fun getCollectedFoodVector() {
+ showWaitingDialog2("加载中……")
+ lifecycleScope.launch {
+ FoodModule.init(this@InitActivity) {
+ getCollectedFoodVector {
+ runOnUiThread {
+ hideWaitingDialog()
+ binding.root.postDelayed({
+ goMainActivity()
+ }, 1000)
+ }
+ }
+ }
+ }
+ }
+
private fun goMainActivity() {
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
finish()
}
+
+ private var checkNetworkTimer: CountDownTimer? = null
+
+ private fun initNetworkTimer() {
+ checkNetworkTimer = object : CountDownTimer(5 * 300, 300) {
+ override fun onTick(millisUntilFinished: Long) {
+
+ }
+
+ override fun onFinish() {
+ L.e("检测网络连接状态" + AppUtil.isNetworkConnected(this@InitActivity))
+ if (!AppUtil.isNetworkConnected(this@InitActivity)) {
+ hideWaitingDialog()
+ binding.okButton.visible()
+ loadNetworkErrorDialog()
+ return
+ }
+ getCollectedFoodVector()
+ }
+ }
+ }
+
+ private fun loadNetworkErrorDialog() {
+ RemindDialog(
+ context = context,
+ content = "网络连接异常,请检查WiFi连接状态后重试",
+ confirmBlock = {
+ startActivity(Intent("android.settings.WIFI_SETTINGS"))
+ }).show()
+ }
+
+ private fun getVectorErrorDialog() {
+ RemindDialog(
+ context = context,
+ content = "未查询到向量数据,请稍后重试?",
+ confirmBlock = {
+ getCollectedFoodVector()
+ }).show()
+ }
+
+ override fun onDestroy() {
+ checkNetworkTimer?.cancel()
+ super.onDestroy()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/sw/dualscreen/activity/MainActivity.kt b/app/src/main/java/com/sw/dualscreen/activity/MainActivity.kt
index afd30c8..3ba662e 100644
--- a/app/src/main/java/com/sw/dualscreen/activity/MainActivity.kt
+++ b/app/src/main/java/com/sw/dualscreen/activity/MainActivity.kt
@@ -916,8 +916,8 @@ class MainActivity : BaseActivity() {
// private val initialDelay = 5 * 60 * 1000L
// private val dealyMillis = 10 * 60 * 1000L
private val initialDelay = 30 * 1000L
- private val dealyMillis = 60 * 1000L
- private var taskPageNo = 1
+ private val dealyMillis = 3 * 60 * 1000L
+// private var taskPageNo = 1
fun startFaceTask() {
faceTaskJob =
intervalExecutor.startIntervalTaskWithInitialDelay(initialDelay, dealyMillis) {
@@ -926,10 +926,10 @@ class MainActivity : BaseActivity() {
return@startIntervalTaskWithInitialDelay
}
viewModel.getFaceIncrementList(
- pageNo = taskPageNo,
+// pageNo = taskPageNo,
timestamp = timestamp,
onAllQueryFinished = {
- taskPageNo = 1
+// taskPageNo = 1
},
onPageQueryFinished = { list ->
runOnUiThread {
diff --git a/app/src/main/java/com/sw/dualscreen/ext/CommonExt.kt b/app/src/main/java/com/sw/dualscreen/ext/CommonExt.kt
index 236b486..86ad187 100644
--- a/app/src/main/java/com/sw/dualscreen/ext/CommonExt.kt
+++ b/app/src/main/java/com/sw/dualscreen/ext/CommonExt.kt
@@ -116,13 +116,34 @@ fun EditText.addOnActionSearchListener(searchCallback: () -> Unit) {
return@setOnEditorActionListener false
}
}
-fun View.clickWithDebounce(delay: Long = 500, action: () -> Unit) {
- var job: Job? = null
+//fun View.clickWithDebounce(delay: Long = 500, action: () -> Unit) {
+// var job: Job? = null
+// setOnClickListener {
+// job?.cancel()
+// job = CoroutineScope(Dispatchers.Main).launch {
+// delay(delay)
+// action()
+// }
+// }
+//}
+
+/**
+ * 极简版防重复点击扩展函数
+ * @param delay 防抖时间(默认300ms)
+ * @param action 点击执行逻辑
+ */
+fun View.clickWithDebounce(delay: Long = 300, action: () -> Unit) {
setOnClickListener {
- job?.cancel()
- job = CoroutineScope(Dispatchers.Main).launch {
- delay(delay)
- action()
+ // 用View的tag存储是否可点击的状态(默认可点击)
+ if (tag as? Boolean ?: true) {
+ tag = false // 标记为不可点击
+ action() // 立即执行点击逻辑
+
+ // 启动协程,延迟后恢复可点击状态
+ CoroutineScope(Dispatchers.Main).launch {
+ delay(delay)
+ tag = true // 恢复可点击
+ }
}
}
}
diff --git a/app/src/main/java/com/sw/dualscreen/viewmodel/UserViewModel.kt b/app/src/main/java/com/sw/dualscreen/viewmodel/UserViewModel.kt
index 9636b48..1fa7771 100644
--- a/app/src/main/java/com/sw/dualscreen/viewmodel/UserViewModel.kt
+++ b/app/src/main/java/com/sw/dualscreen/viewmodel/UserViewModel.kt
@@ -185,17 +185,17 @@ class UserViewModel : BaseViewModel() {
return@withContext
}
onPageQueryFinished(list)
- if (list.size >= pageSize) {
- lastFaceTimestamp = list.last().faceUpdateTimestamp ?: 0L
- getFaceIncrementList(
- pageNo = pageNo + 1,
- pageSize = pageSize,
- timestamp = timestamp,
- onAllQueryFinished = onAllQueryFinished,
- onPageQueryFinished = onPageQueryFinished
- )
- return@withContext
- }
+// if (list.size >= pageSize) {
+// lastFaceTimestamp = list.last().faceUpdateTimestamp ?: 0L
+// getFaceIncrementList(
+// pageNo = pageNo + 1,
+// pageSize = pageSize,
+// timestamp = timestamp,
+// onAllQueryFinished = onAllQueryFinished,
+// onPageQueryFinished = onPageQueryFinished
+// )
+// return@withContext
+// }
//查询完成所有数据,保存时间戳
if (list.isNotEmpty()) {
//非空实现最后一条数据的是时间戳,空使用上次list最后一条时间戳
@@ -576,7 +576,7 @@ class UserViewModel : BaseViewModel() {
launchWithLoading {
val response = repository.getCollectedFoodVector(param)
if (parseResponse(response)) {
- block(response.data)
+ block(response.data?:emptyList())
} else {
block(null)
}
diff --git a/app/src/main/res/drawable/bg_init_button.xml b/app/src/main/res/drawable/bg_init_button.xml
index 02f2a03..71ff7c1 100644
--- a/app/src/main/res/drawable/bg_init_button.xml
+++ b/app/src/main/res/drawable/bg_init_button.xml
@@ -1,7 +1,11 @@
-
+
+ -
+
-
-
-
\ No newline at end of file
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_init.xml b/app/src/main/res/layout/activity_init.xml
index fe50d0c..d42fde8 100644
--- a/app/src/main/res/layout/activity_init.xml
+++ b/app/src/main/res/layout/activity_init.xml
@@ -35,18 +35,18 @@
android:layout_marginTop="200dp"
android:src="@mipmap/img_init" />
-
@@ -56,7 +56,7 @@
android:layout_height="wrap_content"
android:layout_below="@+id/mainImgView"
android:layout_centerHorizontal="true"
- android:layout_marginTop="160dp"
+ android:layout_marginTop="260dp"
android:padding="10dp"
android:background="@drawable/bg_init_button"
android:gravity="center"