diff --git a/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt b/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt index bdae4a1..0b6d7a1 100644 --- a/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt @@ -24,6 +24,7 @@ import com.xiaoqu.watch.util.DeviceUtil import com.xiaoqu.watch.util.NetworkUtil import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.delay +import timber.log.Timber import kotlinx.coroutines.isActive import kotlinx.coroutines.launch import javax.inject.Inject @@ -104,21 +105,25 @@ class HomeFragment : BaseFragment() { } } - /** 更新状态信息显示 */ + /** 更新状态信息显示(try-catch 保护,防止系统关机时 DeadSystemException) */ private fun updateStatus() { - val dateInfo = DateUtil.getDateInfo() - val sb = StringBuilder() - sb.appendLine("${dateInfo.date} ${dateInfo.week} ${dateInfo.time}") - sb.appendLine("设备: ${devicePrefs.brand} ${devicePrefs.model}") - sb.appendLine("网络: ${NetworkUtil.getNetworkTypeName(requireContext())}") - sb.appendLine("绑定: ${if (userPrefs.isBound) "是" else "否"}") - // 电量信息(等收到广播后更新) - if (batteryLevel >= 0) { - sb.appendLine("电量: ${batteryLevel}% ${if (batteryCharging) "(充电中)" else ""}") + try { + val dateInfo = DateUtil.getDateInfo() + val sb = StringBuilder() + sb.appendLine("${dateInfo.date} ${dateInfo.week} ${dateInfo.time}") + sb.appendLine("设备: ${devicePrefs.brand} ${devicePrefs.model}") + sb.appendLine("网络: ${NetworkUtil.getNetworkTypeName(requireContext())}") + sb.appendLine("绑定: ${if (userPrefs.isBound) "是" else "否"}") + // 电量信息(等收到广播后更新) + if (batteryLevel >= 0) { + sb.appendLine("电量: ${batteryLevel}% ${if (batteryCharging) "(充电中)" else ""}") + } + sb.appendLine("屏幕: ${if (screenController.isScreenOn()) "亮" else "灭"}") + sb.appendLine("NFC: ${if (nfcController.isOpen()) "开" else "关"}") + binding.tvStatus.text = sb.toString() + } catch (e: Exception) { + Timber.w(e, "更新状态信息异常") } - sb.appendLine("屏幕: ${if (screenController.isScreenOn()) "亮" else "灭"}") - sb.appendLine("NFC: ${if (nfcController.isOpen()) "开" else "关"}") - binding.tvStatus.text = sb.toString() } /** 绑定测试按钮 */