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
|
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()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user