From 4ccd4eaad01a2939bf9f8bf08f48de55879ac9f7 Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Fri, 15 May 2026 08:43:43 +0800 Subject: [PATCH] =?UTF-8?q?fix(global):=20=E5=B0=86=E7=A7=A4=E7=94=9F?= =?UTF-8?q?=E5=91=BD=E5=91=A8=E6=9C=9F=E6=8F=90=E5=8D=87=E8=87=B3=E8=BF=9B?= =?UTF-8?q?=E7=A8=8B=E7=BA=A7=EF=BC=8C=E4=BF=AE=E5=A4=8D=E5=AD=90=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E7=A9=BA=E7=99=BD=E9=A1=B5=E5=92=8C=E7=A7=A4=E5=81=9C?= =?UTF-8?q?=E6=AD=A2=E5=93=8D=E5=BA=94=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - WeightUtil 初始化移至 BaseApp.onCreate(),通过 ActivityLifecycleCallbacks 在最后一个 Activity 销毁时才调用 stopContinuousRead() - InitActivity 删除 WeightUtil 的初始化/停止调用 - startNextPage() 跳转完成后执行 finish(),防止 InitActivity 残留任务栈 导致返回时出现空白页,及被系统回收时触发 onDestroy 意外停止秤读取 --- .../com/shuwei/dish/match/base/BaseApp.kt | 23 +++++++++++++++++++ .../com/shuwei/dish/match/ui/InitActivity.kt | 12 ++-------- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/shuwei/dish/match/base/BaseApp.kt b/app/src/main/java/com/shuwei/dish/match/base/BaseApp.kt index e4040fd..207f326 100644 --- a/app/src/main/java/com/shuwei/dish/match/base/BaseApp.kt +++ b/app/src/main/java/com/shuwei/dish/match/base/BaseApp.kt @@ -1,10 +1,12 @@ package com.shuwei.dish.match.base +import android.app.Activity import android.app.Application import android.content.Context import android.content.Intent import android.content.IntentFilter import android.content.SharedPreferences +import android.os.Bundle import android.util.Log import com.shuwei.dish.match.R 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.BootReceiver import com.shuwei.dish.match.utils.CrashHandler +import com.shuwei.dish.match.utils.WeightUtil import com.shuwei.dish.match.utils.Weigher2 @@ -57,6 +60,26 @@ class BaseApp : Application() { // 启动秤服务(主设备多启动发现+聚合,子设备只启动服务端+注册) 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" val filter = IntentFilter(Intent.ACTION_BOOT_COMPLETED) registerReceiver(BootReceiver(), filter) diff --git a/app/src/main/java/com/shuwei/dish/match/ui/InitActivity.kt b/app/src/main/java/com/shuwei/dish/match/ui/InitActivity.kt index 55d4e55..3fffe41 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/InitActivity.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/InitActivity.kt @@ -20,7 +20,6 @@ import com.shuwei.dish.match.utils.AddressUtil import com.shuwei.dish.match.utils.AppUtil import com.shuwei.dish.match.utils.NetworkUtils 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.startActivity import com.shuwei.dish.match.utils.ext.visible @@ -82,12 +81,6 @@ class InitActivity : BaseActivity() { BaseApp.canteenId = SpTool.canteenId - WeightUtil.init() - WeightUtil.getWeight() - WeightUtil.startContinuousRead() - //对净材秤1和熟食秤2称进行清零 - //WeightUtil.tareTwo(AddressUtil.ONE) - //WeightUtil.tareTwo(AddressUtil.TWO) initViews() } @@ -100,6 +93,7 @@ class InitActivity : BaseActivity() { // 子设备:直接进入小屏专属页面,不走原有大屏业务流程 if (GlobalData.deviceRole == DeviceRole.SLAVE) { startActivity() + finish() return@launch } // 主设备:走原有路由逻辑 @@ -116,6 +110,7 @@ class InitActivity : BaseActivity() { startActivity() } } + finish() } } @@ -142,9 +137,6 @@ class InitActivity : BaseActivity() { override fun onDestroy() { countdownHandler.removeCallbacksAndMessages(null) - WeightUtil.stopContinuousRead() - // 秤服务伴随进程生命周期,无需在 Activity 销毁时停止;进程退出时 OS 会自动回收所有资源 - // ScaleServiceManager.stop() super.onDestroy() }