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() }