Android TV连续多次切换信源断电重启 切信源异常

2023-12-17 22:32

本文主要是介绍Android TV连续多次切换信源断电重启 切信源异常,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    问题描述:在TV端 连续多次切换信源后断电重启,TV重启后并没有进入最后一次切到的信源,而是进入了倒数第二次切到的信源。

    具体操作:打开信源菜单-选择HDMI1-打开信源菜单-选择HDMI2-打开信源菜单-选择TV,如此循环往复操作数次,倒数第二次的信源是TV,最后一次的信源是HDMI2。随后在HDMI2信源下断电重启。

    预期现象:断电重启后,TV当前信源为HDMI2。

    实际现象:断电重启后,TV当前信源为DTV。

    分析:通过日志信息分析在Android应用层执行的切信源流程是正确的,中间件同事通过LOG分析,中间件的流程也是正确的。中间件断电前后的日志如下:

    断电前:

    断电后:

 

    可以看到,断电前执行了切换到HDMI2信源的动作,并做了将当前信源保存到db文件的动作。但是断电后从db文件取到的上次的信源却是DTV,这是为什么呢?

    从前面的分析,这个问题可以简单归纳一下:切信源后马上断电再开机,数据库中保存的信源读出来还是切换前的信源,导致系统开机执行的还是切换前的信源。

     这是操作系统策略问题,操作系统在写flash的时候,为了提高系统效率和减少磁盘写次数,都会有“延迟写”的机制:

    当写flash时,首先写入缓存,当达到一定条件,例如缓存满或者重用缓存时,才会真正通过实际I/O写到flash

    所以切换信源后马上断电,数据库中保存的数据有时还没有真正烧到flash中,所以会丢失。

    如前面分析,系统延迟写机制的原因,目的是保证系统效率和延长flash寿命,副作用就是会出现这种断电后数据没有及时更新到flash的情况。

    上层会保证写数据的原子性,即相关数据要么全部写入,要么全部没有写入,从而使断电开机后即使没有保存上次的数据,也不会出现其他异常。

 

 

 

 

 

 

 

 

 

 

 

这篇关于Android TV连续多次切换信源断电重启 切信源异常的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/506097

相关文章

javax.net.ssl.SSLHandshakeException:异常原因及解决方案

《javax.net.ssl.SSLHandshakeException:异常原因及解决方案》javax.net.ssl.SSLHandshakeException是一个SSL握手异常,通常在建立SS... 目录报错原因在程序中绕过服务器的安全验证注意点最后多说一句报错原因一般出现这种问题是因为目标服务器

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Java空指针异常NullPointerException的原因与解决方案

《Java空指针异常NullPointerException的原因与解决方案》在Java开发中,NullPointerException(空指针异常)是最常见的运行时异常之一,通常发生在程序尝试访问或... 目录一、空指针异常产生的原因1. 变量未初始化2. 对象引用被显式置为null3. 方法返回null

SpringBoot实现多环境配置文件切换

《SpringBoot实现多环境配置文件切换》这篇文章主要为大家详细介绍了如何使用SpringBoot实现多环境配置文件切换功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 示例代码结构2. pom文件3. application文件4. application-dev文

redis在spring boot中异常退出的问题解决方案

《redis在springboot中异常退出的问题解决方案》:本文主要介绍redis在springboot中异常退出的问题解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴... 目录问题:解决 问题根源️ 解决方案1. 异步处理 + 提前ACK(关键步骤)2. 调整Redis消费者组

springboot项目redis缓存异常实战案例详解(提供解决方案)

《springboot项目redis缓存异常实战案例详解(提供解决方案)》redis基本上是高并发场景上会用到的一个高性能的key-value数据库,属于nosql类型,一般用作于缓存,一般是结合数据... 目录缓存异常实践案例缓存穿透问题缓存击穿问题(其中也解决了穿透问题)完整代码缓存异常实践案例Red

Java内存区域与内存溢出异常的详细探讨

《Java内存区域与内存溢出异常的详细探讨》:本文主要介绍Java内存区域与内存溢出异常的相关资料,分析异常原因并提供解决策略,如参数调整、代码优化等,帮助开发者排查内存问题,需要的朋友可以参考下... 目录一、引言二、Java 运行时数据区域(一)程序计数器(二)Java 虚拟机栈(三)本地方法栈(四)J

解决Java异常报错:java.nio.channels.UnresolvedAddressException问题

《解决Java异常报错:java.nio.channels.UnresolvedAddressException问题》:本文主要介绍解决Java异常报错:java.nio.channels.Unr... 目录异常含义可能出现的场景1. 错误的 IP 地址格式2. DNS 解析失败3. 未初始化的地址对象解决