fix(global): 将秤生命周期提升至进程级,修复子设备空白页和秤停止响应问题

- WeightUtil 初始化移至 BaseApp.onCreate(),通过 ActivityLifecycleCallbacks
  在最后一个 Activity 销毁时才调用 stopContinuousRead()
- InitActivity 删除 WeightUtil 的初始化/停止调用
- startNextPage() 跳转完成后执行 finish(),防止 InitActivity 残留任务栈
  导致返回时出现空白页,及被系统回收时触发 onDestroy 意外停止秤读取
This commit is contained in:
2026-05-15 08:43:43 +08:00
parent b44f4aae5a
commit 4ccd4eaad0
2 changed files with 25 additions and 10 deletions
@@ -1,10 +1,12 @@
package com.shuwei.dish.match.base package com.shuwei.dish.match.base
import android.app.Activity
import android.app.Application import android.app.Application
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.IntentFilter import android.content.IntentFilter
import android.content.SharedPreferences import android.content.SharedPreferences
import android.os.Bundle
import android.util.Log import android.util.Log
import com.shuwei.dish.match.R import com.shuwei.dish.match.R
import com.shuwei.dish.match.db.DatabaseProvider import com.shuwei.dish.match.db.DatabaseProvider
@@ -15,6 +17,7 @@ import com.shuwei.dish.match.utils.AppUtil
import com.shuwei.dish.match.utils.SpTool import com.shuwei.dish.match.utils.SpTool
import com.shuwei.dish.match.utils.BootReceiver import com.shuwei.dish.match.utils.BootReceiver
import com.shuwei.dish.match.utils.CrashHandler import com.shuwei.dish.match.utils.CrashHandler
import com.shuwei.dish.match.utils.WeightUtil
import com.shuwei.dish.match.utils.Weigher2 import com.shuwei.dish.match.utils.Weigher2
@@ -57,6 +60,26 @@ class BaseApp : Application() {
// 启动秤服务(主设备多启动发现+聚合,子设备只启动服务端+注册) // 启动秤服务(主设备多启动发现+聚合,子设备只启动服务端+注册)
ScaleServiceManager.start(this) ScaleServiceManager.start(this)
// 初始化秤,进程级生命周期管理:最后一个 Activity 销毁时才停止读取
WeightUtil.init()
WeightUtil.getWeight()
WeightUtil.startContinuousRead()
registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
private var activityCount = 0
override fun onActivityCreated(a: Activity, b: Bundle?) { activityCount++ }
override fun onActivityDestroyed(a: Activity) {
if (--activityCount <= 0) {
WeightUtil.stopContinuousRead()
}
}
override fun onActivityStarted(a: Activity) {}
override fun onActivityResumed(a: Activity) {}
override fun onActivityPaused(a: Activity) {}
override fun onActivityStopped(a: Activity) {}
override fun onActivitySaveInstanceState(a: Activity, b: Bundle) {}
})
// GlobalData.deviceId = "39a7abdd06b3c7ab" // GlobalData.deviceId = "39a7abdd06b3c7ab"
val filter = IntentFilter(Intent.ACTION_BOOT_COMPLETED) val filter = IntentFilter(Intent.ACTION_BOOT_COMPLETED)
registerReceiver(BootReceiver(), filter) registerReceiver(BootReceiver(), filter)
@@ -20,7 +20,6 @@ import com.shuwei.dish.match.utils.AddressUtil
import com.shuwei.dish.match.utils.AppUtil import com.shuwei.dish.match.utils.AppUtil
import com.shuwei.dish.match.utils.NetworkUtils import com.shuwei.dish.match.utils.NetworkUtils
import com.shuwei.dish.match.utils.SpTool import com.shuwei.dish.match.utils.SpTool
import com.shuwei.dish.match.utils.WeightUtil
import com.shuwei.dish.match.utils.ext.gone import com.shuwei.dish.match.utils.ext.gone
import com.shuwei.dish.match.utils.ext.startActivity import com.shuwei.dish.match.utils.ext.startActivity
import com.shuwei.dish.match.utils.ext.visible import com.shuwei.dish.match.utils.ext.visible
@@ -82,12 +81,6 @@ class InitActivity : BaseActivity() {
BaseApp.canteenId = SpTool.canteenId BaseApp.canteenId = SpTool.canteenId
WeightUtil.init()
WeightUtil.getWeight()
WeightUtil.startContinuousRead()
//对净材秤1和熟食秤2称进行清零
//WeightUtil.tareTwo(AddressUtil.ONE)
//WeightUtil.tareTwo(AddressUtil.TWO)
initViews() initViews()
} }
@@ -100,6 +93,7 @@ class InitActivity : BaseActivity() {
// 子设备:直接进入小屏专属页面,不走原有大屏业务流程 // 子设备:直接进入小屏专属页面,不走原有大屏业务流程
if (GlobalData.deviceRole == DeviceRole.SLAVE) { if (GlobalData.deviceRole == DeviceRole.SLAVE) {
startActivity<SlaveActivity>() startActivity<SlaveActivity>()
finish()
return@launch return@launch
} }
// 主设备:走原有路由逻辑 // 主设备:走原有路由逻辑
@@ -116,6 +110,7 @@ class InitActivity : BaseActivity() {
startActivity<HomeActivity>() startActivity<HomeActivity>()
} }
} }
finish()
} }
} }
@@ -142,9 +137,6 @@ class InitActivity : BaseActivity() {
override fun onDestroy() { override fun onDestroy() {
countdownHandler.removeCallbacksAndMessages(null) countdownHandler.removeCallbacksAndMessages(null)
WeightUtil.stopContinuousRead()
// 秤服务伴随进程生命周期,无需在 Activity 销毁时停止;进程退出时 OS 会自动回收所有资源
// ScaleServiceManager.stop()
super.onDestroy() super.onDestroy()
} }