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

相关文章

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Python中异常类型ValueError使用方法与场景

《Python中异常类型ValueError使用方法与场景》:本文主要介绍Python中的ValueError异常类型,它在处理不合适的值时抛出,并提供如何有效使用ValueError的建议,文中... 目录前言什么是 ValueError?什么时候会用到 ValueError?场景 1: 转换数据类型场景

Spring中Bean有关NullPointerException异常的原因分析

《Spring中Bean有关NullPointerException异常的原因分析》在Spring中使用@Autowired注解注入的bean不能在静态上下文中访问,否则会导致NullPointerE... 目录Spring中Bean有关NullPointerException异常的原因问题描述解决方案总结

Spring Boot实现多数据源连接和切换的解决方案

《SpringBoot实现多数据源连接和切换的解决方案》文章介绍了在SpringBoot中实现多数据源连接和切换的几种方案,并详细描述了一个使用AbstractRoutingDataSource的实... 目录前言一、多数据源配置与切换方案二、实现步骤总结前言在 Spring Boot 中实现多数据源连接

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

Python中的异步:async 和 await以及操作中的事件循环、回调和异常

《Python中的异步:async和await以及操作中的事件循环、回调和异常》在现代编程中,异步操作在处理I/O密集型任务时,可以显著提高程序的性能和响应速度,Python提供了asyn... 目录引言什么是异步操作?python 中的异步编程基础async 和 await 关键字asyncio 模块理论