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

相关文章

解决java.lang.NullPointerException问题(空指针异常)

《解决java.lang.NullPointerException问题(空指针异常)》本文详细介绍了Java中的NullPointerException异常及其常见原因,包括对象引用为null、数组元... 目录Java.lang.NullPointerException(空指针异常)NullPointer

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

Oracle数据库如何切换登录用户(system和sys)

《Oracle数据库如何切换登录用户(system和sys)》文章介绍了如何使用SQL*Plus工具登录Oracle数据库的system用户,包括打开登录入口、输入用户名和口令、以及切换到sys用户的... 目录打开登录入口登录system用户总结打开登录入口win+R打开运行对话框,输php入:sqlp

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件

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 命令的基本用法三、远程关机与重启四、实际应用