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

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

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

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

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