fix(global): 将秤生命周期提升至进程级,修复子设备空白页和秤停止响应问题
- WeightUtil 初始化移至 BaseApp.onCreate(),通过 ActivityLifecycleCallbacks 在最后一个 Activity 销毁时才调用 stopContinuousRead() - InitActivity 删除 WeightUtil 的初始化/停止调用 - startNextPage() 跳转完成后执行 finish(),防止 InitActivity 残留任务栈 导致返回时出现空白页,及被系统回收时触发 onDestroy 意外停止秤读取
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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<SlaveActivity>()
|
||||
finish()
|
||||
return@launch
|
||||
}
|
||||
// 主设备:走原有路由逻辑
|
||||
@@ -116,6 +110,7 @@ class InitActivity : BaseActivity() {
|
||||
startActivity<HomeActivity>()
|
||||
}
|
||||
}
|
||||
finish()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,9 +137,6 @@ class InitActivity : BaseActivity() {
|
||||
|
||||
override fun onDestroy() {
|
||||
countdownHandler.removeCallbacksAndMessages(null)
|
||||
WeightUtil.stopContinuousRead()
|
||||
// 秤服务伴随进程生命周期,无需在 Activity 销毁时停止;进程退出时 OS 会自动回收所有资源
|
||||
// ScaleServiceManager.stop()
|
||||
super.onDestroy()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user