desc:传感器昵称也保存再mmkv中,mmkv断电丢失数据问题规避减小概率

main
xiaowusky 1 year ago
parent 9e969b8588
commit a75093e61d

@ -19,6 +19,7 @@ import androidx.appcompat.widget.AppCompatRadioButton
import androidx.core.view.postDelayed
import androidx.lifecycle.lifecycleScope
import com.common.commonlib.utils.LogUtils
import com.common.commonlib.utils.MMKVUtils
import com.loper7.date_time_picker.number_picker.NumberPicker
import com.yinuo.safetywatcher.R
import com.yinuo.safetywatcher.databinding.ActivityBaseBinding
@ -30,6 +31,9 @@ import com.yinuo.safetywatcher.watcher.utils.RecordHelper
import com.yinuo.safetywatcher.watcher.utils.SoundUtils
import com.yinuo.safetywatcher.watcher.utils.VolumeUtil
import com.yinuo.safetywatcher.watcher.utils.trySetCommonBg
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
abstract class BaseActivity : AppCompatActivity() {
@ -201,6 +205,9 @@ abstract class BaseActivity : AppCompatActivity() {
override fun onDestroy() {
super.onDestroy()
closeLoadingDialog()
GlobalScope.launch(Dispatchers.IO) {
MMKVUtils.sync()
}
}
var isHomeLongPress = false

@ -18,7 +18,7 @@ object GasCache {
val all = typeDao.getAll()
val context = CommonApplication.getContext()
all.forEach {
setNickname(it.type, it.nickName ?: "${it.type}传感器")
setNickname(it.type, getSensorNickName(it.type))
setStatus(it.type, getShowStatus(context, it.status))
}
}

@ -248,3 +248,15 @@ fun getShowWarnTxt(warn: Warning?): String {
}
return ""
}
fun saveSensorNickName(gasType: String, name: String) {
if (name.isNotEmpty()) {
MMKVUtils.put("${gasType}_sensor_nickname", name)
GasCache.setNickname(gasType, name)
}
}
fun getSensorNickName(gasType: String): String {
val localNickName = MMKVUtils.getString("${gasType}_sensor_nickname")
return if (localNickName?.isNotEmpty() == true) localNickName else "${gasType}传感器"
}

@ -46,4 +46,9 @@ class SensorActivity : NoOptionsActivity() {
}
}
}
override fun onResume() {
super.onResume()
mAdapter?.notifyDataSetChanged()
}
}

@ -5,6 +5,7 @@ import android.view.KeyEvent
import android.view.View
import androidx.lifecycle.lifecycleScope
import com.common.commonlib.db.DBUtils
import com.common.commonlib.utils.MMKVUtils
import com.common.commonlib.utils.getGasNickName
import com.common.commonlib.utils.saveGasNickName
import com.yinuo.safetywatcher.R
@ -21,7 +22,9 @@ import com.yinuo.safetywatcher.watcher.port.cmd.CH4_H2
import com.yinuo.safetywatcher.watcher.port.cmd.O2
import com.yinuo.safetywatcher.watcher.port.cmd.VOCS
import com.yinuo.safetywatcher.watcher.port.getLocalGasUnit
import com.yinuo.safetywatcher.watcher.port.getSensorNickName
import com.yinuo.safetywatcher.watcher.port.saveGasUnit
import com.yinuo.safetywatcher.watcher.port.saveSensorNickName
import com.yinuo.safetywatcher.watcher.utils.hideIme
import com.yinuo.safetywatcher.watcher.utils.showIme
import com.yinuo.safetywatcher.watcher.utils.showToast
@ -85,16 +88,18 @@ class SensorSettingActivity : NoOptionsActivity() {
// 昵称和量程
lifecycleScope.launch(Dispatchers.IO) {
val typeDao = DBUtils.gasTypeDao()
val gasType = typeDao.getByName(gasName)
// val typeDao = DBUtils.gasTypeDao()
// val gasType = typeDao.getByName(gasName)
val gasNickName = getGasNickName(gasName)
val sensorNickName = getSensorNickName(gasName)
val gasRange = ParseHelper.getGasRangeMax(gasName)
launch(Dispatchers.Main) {
if (gasType != null && !gasType.nickName.isNullOrEmpty()) {
mBinding.etName.setText(gasType.nickName)
} else {
mBinding.etName.setText("${gasName}传感器")
}
val gasRange = ParseHelper.getGasRangeMax(gasName)
// if (gasType != null && !gasType.nickName.isNullOrEmpty()) {
// mBinding.etName.setText(gasType.nickName)
// } else {
// mBinding.etName.setText("${gasName}传感器")
// }
mBinding.etName.setText(sensorNickName)
// mBinding.etStep.text = getString(R.string.sensor_step_txt).plus(": $gasRange")
mBinding.etStep.hint = "量程:$gasRange $localGasUnit"
mBinding.etGasName.hint = "气体名称:$gasNickName"
@ -247,16 +252,17 @@ class SensorSettingActivity : NoOptionsActivity() {
private fun saveSetting() {
val nickName = mBinding.etName.text.toString()
GlobalScope.launch(Dispatchers.IO) {
val typeDao = DBUtils.gasTypeDao()
val gasType = typeDao.getByName(gasName)
val ifEmpty = nickName.ifEmpty { "${gasName}传感器" }
gasType?.nickName = ifEmpty
GasCache.setNickname(gasName, ifEmpty)
if (gasType != null) {
typeDao.insert(gasType)
}
}
saveSensorNickName(gasName, nickName)
// GlobalScope.launch(Dispatchers.IO) {
// val typeDao = DBUtils.gasTypeDao()
// val gasType = typeDao.getByName(gasName)
// val ifEmpty = nickName.ifEmpty { "${gasName}传感器" }
// gasType?.nickName = ifEmpty
// GasCache.setNickname(gasName, ifEmpty)
// if (gasType != null) {
// typeDao.insert(gasType)
// }
// }
// 气体名称
val gasNickName = mBinding.etGasName.text.toString()
saveGasNickName(gasName, gasNickName)
@ -281,6 +287,7 @@ class SensorSettingActivity : NoOptionsActivity() {
selectedUnit = UNIT_LEL
}
saveGasUnit(gasName, selectedUnit)
MMKVUtils.sync()
// }
showToast("保存成功")
}

@ -8,6 +8,7 @@ import com.yinuo.safetywatcher.R
import com.yinuo.safetywatcher.databinding.LayoutItemSensorBinding
import com.yinuo.safetywatcher.watcher.base.BaseRvAdapter
import com.yinuo.safetywatcher.watcher.port.cmd.GasPortStatus
import com.yinuo.safetywatcher.watcher.port.getSensorNickName
import com.yinuo.safetywatcher.watcher.port.getShowStatus
import com.yinuo.safetywatcher.watcher.ui.SensorSettingActivity
@ -38,8 +39,8 @@ class SensorAdapter :
intent.putExtra("index", data.sensorIndex)
context.startActivity(intent)
}
binding.sensorName.text = data.nickName ?: "${data.type}传感器"
val sensorNickName = getSensorNickName(data.type)
binding.sensorName.text = sensorNickName
val state = data.status
binding.sensorStatus.text = getShowStatus(context, state)
binding.sensorStatus.setTextColor(context.getColor(getShowStatusColor(state)))

@ -70,4 +70,8 @@ object MMKVUtils {
else -> MMKV.defaultMMKV()
}
}
fun sync(vararg args: Any) {
getKV(*args).sync()
}
}
Loading…
Cancel
Save