fix(activity): 修复 FoodRecognizeActivity 称重更新导致 useWeight 异常的问题

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-21 10:11:10 +08:00
co-authored by Claude Sonnet 4.6
parent 6b312ec689
commit da712ed25a
@@ -234,12 +234,8 @@ class FoodRecognizeActivity : BaseActivity() {
} }
if (weight >= PrepareCookActivity.WEIGHT_RECOGNIZE_VALUE) { if (weight >= PrepareCookActivity.WEIGHT_RECOGNIZE_VALUE) {
adapter.items.firstOrNull { it.isClicked }?.let { item -> adapter.items.firstOrNull { it.isClicked }?.let { item ->
if (weight > (item.useWeight ?: 0.0)) { if (pendingWeight != weight) {
// 重量增加:立即更新 // 无论增减,均延迟更新,避免手拿物品时的瞬时增重干扰
cancelPendingWeightUpdate()
item.useWeight = currentWeight
} else if (pendingWeight != weight) {
// 重量减少且目标值变化:重置延迟任务,3 秒无新变化后更新
cancelPendingWeightUpdate() cancelPendingWeightUpdate()
pendingWeight = weight pendingWeight = weight
pendingWeightRunnable = Runnable { pendingWeightRunnable = Runnable {
@@ -266,10 +262,16 @@ class FoodRecognizeActivity : BaseActivity() {
* 携带当前选中食材关闭页面 * 携带当前选中食材关闭页面
*/ */
private fun finishWithResult(isManualCancel: Boolean) { private fun finishWithResult(isManualCancel: Boolean) {
cancelPendingWeightUpdate()
val intent = Intent().apply { val intent = Intent().apply {
putExtra(IS_MANUAL_CANCEL, isManualCancel) putExtra(IS_MANUAL_CANCEL, isManualCancel)
if (isManualCancel.not()) { if (isManualCancel.not()) {
list.getOrNull(selectedPosition)?.let { list.getOrNull(selectedPosition)?.let {
// 兜底:若 useWeight 仍为空或0,使用当前实时重量
if ((it.useWeight ?: 0.0) <= 0.0) {
it.useWeight = currentWeight
}
putExtra(EXTRA_SELECTED_ITEM, it) putExtra(EXTRA_SELECTED_ITEM, it)
} }
} }
@@ -281,6 +283,6 @@ class FoodRecognizeActivity : BaseActivity() {
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
cancelPendingWeightUpdate() cancelPendingWeightUpdate()
// WeightUtil.removeWeightListener(TAG) WeightUtil.removeWeightListener(TAG)
} }
} }