refactor(activity): 优化启动页跳转延迟及子设备页面稳定性,修复导航栏闪烁问题

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-13 14:31:29 +08:00
co-authored by Claude Sonnet 4.6
parent bb32ed84fe
commit 0d0fcd24b7
11 changed files with 218 additions and 52 deletions
@@ -2,6 +2,7 @@ package com.shuwei.dish.match.ui
import android.annotation.SuppressLint
import android.content.Intent
import android.util.Log
import android.graphics.Color
import android.os.Bundle
import android.os.SystemClock
@@ -26,7 +27,6 @@ import com.shuwei.dish.match.utils.ext.startActivity
import com.shuwei.dish.match.viewmodel.AppViewModel
import com.shuwei.dish.match.viewmodel.factory.AppFactory
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.launch
class InitActivity : BaseActivity() {
@@ -63,8 +63,9 @@ class InitActivity : BaseActivity() {
WeightUtil.startContinuousRead()
initViews()
// countDown()
val dpi = resources.displayMetrics.density
val metrics = resources.displayMetrics.toString()
Log.d(TAG, "dpi=$dpi, $metrics")
}
private fun initViewModel() {
@@ -74,24 +75,27 @@ class InitActivity : BaseActivity() {
}
private fun startNextPage() {
// 子设备:直接进入小屏专属页面,不走原有大屏业务流程
if (GlobalData.deviceRole == DeviceRole.SLAVE) {
startActivity<SlaveActivity>()
return
}
// 主设备:走原有路由逻辑
val launchPageType = SpTool.getInt(SpTool.LAUNCH_PAGE_TYPE, -1)
when (launchPageType) {
0 -> {
startActivity<SelectDishActivity>()
lifecycleScope.launch {
delay(2000)
// 子设备:直接进入小屏专属页面,不走原有大屏业务流程
if (GlobalData.deviceRole == DeviceRole.SLAVE) {
startActivity<SlaveActivity>()
return@launch
}
// 主设备:走原有路由逻辑
val launchPageType = SpTool.getInt(SpTool.LAUNCH_PAGE_TYPE, -1)
when (launchPageType) {
0 -> {
startActivity<SelectDishActivity>()
}
1 -> {
goSampling()
}
1 -> {
goSampling()
}
else -> {
startActivity<HomeActivity>()
else -> {
startActivity<HomeActivity>()
}
}
}
}
@@ -117,25 +121,6 @@ class InitActivity : BaseActivity() {
}
}
private fun countDown() {
lifecycleScope.launch {
flow {
(2 downTo 1).forEach {
delay(1000)
emit(it)
}
}.collect {
// 倒计时结束执行跳转
if (it == 1) {
startNextPage()
//保留初始化页面,不关闭
// finish()
}
}
}
}
override fun onDestroy() {
WeightUtil.stopContinuousRead()
super.onDestroy()
@@ -257,7 +242,7 @@ class InitActivity : BaseActivity() {
*/
private fun openNetworkSettings() {
val intent = Intent(android.provider.Settings.ACTION_WIFI_SETTINGS)
startActivity(intent)
startActivity(intent) {}
}
private fun addBackKeyListener() {
@@ -6,6 +6,7 @@ import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.activity.OnBackPressedCallback
import com.shuwei.dish.match.base.BaseActivity
import com.shuwei.dish.match.base.GlobalData
import com.shuwei.dish.match.databinding.ActivitySlaveBinding
@@ -44,9 +45,21 @@ class SlaveActivity : BaseActivity() {
binding.rvScaleList.itemAnimator = null // 关闭默认动画,避免数据频繁更新时出现闪烁错乱
binding.rvScaleList.adapter = adapter
updateMasterStatus(false)
updateMasterStatus(ScaleServiceManager.isMasterConnected)
listenLocalScales()
listenMasterConnection()
addBackKeyListener()
}
/**
* 禁用返回键,防止退回 InitActivity 后重复打开本页
*/
private fun addBackKeyListener() {
onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
// 禁用返回键,不执行任何操作
}
})
}
/**