智能座舱多屏项目,中控屏切换语言,后排屏闪黑屏问题

news2024/12/25 9:18:09

1. 背景

智能座舱多屏项目,中控屏切换语言,后排屏闪黑屏问题

2. 详细分析过程

  1. 通过events log查看activity的生命周期:adb shell logcat -b events

com.android.rwhvac.view.behind.BehindActivity2 : displayId = 2 副屏app
com.android.carsettings.CarSettingActivity: displayId = 0 主屏app
从下面的log可以看出来,在主屏切换语言的时候,主,副屏的app都会relaunch,生命周期重走。

11-07 21:58:07.174  1435  3824 I wm_relaunch_resume_activity: [0,57528784,61,com.android.carsettings/.CarSettingActivity]
11-07 21:58:07.176  1435  3824 I wm_relaunch_resume_activity: [0,188588203,60,com.android.rwhvac/.view.behind.BehindActivity2]
11-07 21:58:07.178  5833  5833 I wm_on_top_resumed_lost_called: [188588203,com.android.rwhvac.view.behind.BehindActivity2,pausing]
11-07 21:58:07.180  5833  5833 I wm_on_paused_called: [188588203,com.android.rwhvac.view.behind.BehindActivity2,performPause]
11-07 21:58:07.187  5833  5833 I wm_on_stop_called: [188588203,com.android.rwhvac.view.behind.BehindActivity2,handleRelaunchActivity]
11-07 21:58:07.240  3154  3154 I wm_on_paused_called: [57528784,com.android.carsettings.CarSettingActivity,performPause]
11-07 21:58:07.241  5833  5833 I wm_on_destroy_called: [188588203,com.android.rwhvac.view.behind.BehindActivity2,performDestroy]
11-07 21:58:07.244  3154  3154 I wm_on_stop_called: [57528784,com.android.carsettings.CarSettingActivity,handleRelaunchActivity]
11-07 21:58:07.280  3154  3154 I wm_on_destroy_called: [57528784,com.android.carsettings.CarSettingActivity,performDestroy]
11-07 21:58:07.284  5833  5833 I wm_on_create_called: [188588203,com.android.rwhvac.view.behind.BehindActivity2,performCreate]
11-07 21:58:07.299  1435  1752 I wm_wallpaper_surface: [0,0,null]
11-07 21:58:07.387  5833  5833 I wm_on_start_called: [188588203,com.android.rwhvac.view.behind.BehindActivity2,handleStartActivity]
11-07 21:58:07.393  5833  5833 I wm_on_resume_called: [188588203,com.android.rwhvac.view.behind.BehindActivity2,RESUME_ACTIVITY]
11-07 21:58:07.400  5833  5833 I wm_on_top_resumed_gained_called: [188588203,com.android.rwhvac.view.behind.BehindActivity2,topWhenResuming]
11-07 21:58:07.400  3154  3154 I wm_on_create_called: [57528784,com.android.carsettings.CarSettingActivity,performCreate]
11-07 21:58:07.448  3154  3154 I wm_on_start_called: [57528784,com.android.carsettings.CarSettingActivity,handleStartActivity]
11-07 21:58:07.537  3154  3154 I wm_on_resume_called: [57528784,com.android.carsettings.CarSettingActivity,RESUME_ACTIVITY]
11-07 21:58:07.606  1435  1561 I wm_wallpaper_surface: [0,1,Window{3092928 u0 com.android.carsettings/com.android.carsettings.CarSettingActivity}]

2.通过堆栈信息可以知,切换语言----configchange----startFreezingScreen,通过log可知,当用户点击前排屏的时候,freezing的是前排屏,后排屏不会冻结,那么出现后排屏闪黑屏,一般是app relaunch 耗时导致的,需要app优化relaunch性能。

11-07 20:05:09.362  1534  4373 W xxx-frozen: startFreezingScreenLocked, app = ProcessRecord{3a565cd 5847:com.android.rwhvac.behindscreen/1000}, this = ActivityRecord{9059fb8 u0 com.android.rwhvac/.view.behind.BehindActivity2} t40}
11-07 20:05:09.362  1534  4373 W xxx-frozen: startFreezingScreen, overrideOriginalDisplayRotation = -1
11-07 20:05:09.366  1534  4373 W xxx-frozen: Set freezing of token = :Token{850ff64 ActivityRecord{9059fb8 u0 com.android.rwhvac/.view.behind.BehindActivity2} t40}} visible= true freezing= false visibleRequested= true, mDisplayContent = Display{#2 state=ON size=1024x274 ROTATION_0}, callstack =
11-07 20:05:09.366  1534  4373 W xxx-frozen: java.lang.Throwable: xxx
11-07 20:05:09.366  1534  4373 W xxx-frozen:         at com.android.server.wm.ActivityRecord.startFreezingScreen(ActivityRecord.java:6532)
11-07 20:05:09.366  1534  4373 W xxx-frozen:         at com.android.server.wm.ActivityRecord.startFreezingScreen(ActivityRecord.java:6519)
11-07 20:05:09.366  1534  4373 W xxx-frozen:         at com.android.server.wm.ActivityRecord.startFreezingScreenLocked(ActivityRecord.java:6514)
11-07 20:05:09.366  1534  4373 W xxx-frozen:         at com.android.server.wm.ActivityRecord.startFreezingScreenLocked(ActivityRecord.java:6493)
11-07 20:05:09.366  1534  4373 W xxx-frozen:         at com.android.server.wm.ActivityRecord.ensureActivityConfiguration(ActivityRecord.java:9441)
11-07 20:05:09.366  1534  4373 W xxx-frozen:         at com.android.server.wm.ActivityRecord.ensureActivityConfiguration(ActivityRecord.java:9297)
11-07 20:05:09.366  1534  4373 W xxx-frozen:         at com.android.server.wm.ActivityTaskManagerService.ensureConfigAndVisibilityAfterUpdate(ActivityTaskManagerService.java:5099)
11-07 20:05:09.366  1534  4373 W xxx-frozen:         at com.android.server.wm.ActivityTaskManagerService.updateConfigurationLocked(ActivityTaskManagerService.java:4385)
11-07 20:05:09.366  1534  4373 W xxx-frozen:         at com.android.server.wm.ActivityTaskManagerService.updateConfigurationLocked(ActivityTaskManagerService.java:4358)
11-07 20:05:09.366  1534  4373 W xxx-frozen:         at com.android.server.wm.ActivityTaskManagerService.updatePersistentConfiguration(ActivityTaskManagerService.java:4348)
11-07 20:05:09.366  1534  4373 W xxx-frozen:         at com.android.server.am.ActivityManagerService.updatePersistentConfigurationWithAttribution(ActivityManagerService.java:15506)
11-07 20:05:09.366  1534  4373 W xxx-frozen:         at com.android.server.am.ActivityManagerService.updatePersistentConfiguration(ActivityManagerService.java:15490)
11-07 20:05:09.366  1534  4373 W xxx-frozen:         at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:3573)
11-07 20:05:09.366  1534  4373 W xxx-frozen:         at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2678)
11-07 20:05:09.366  1534  4373 W xxx-frozen:         at android.os.Binder.execTransactInternal(Binder.java:1280)
11-07 20:05:09.366  1534  4373 W xxx-frozen:         at android.os.Binder.execTransact(Binder.java:1244)

当用户点击前排屏的时候,freezing的是前排屏。代码逻辑如下:
在这里插入图片描述

在这里插入图片描述

11-07 22:44:41.645  1453  1580 W xxx200: positionChildAt, this = com.android.server.wm.RootWindowContainer@b840de1 positionChildAt: container=Display 0 name="内置屏幕" is not a child of container=ROOT current parent=com.android.server.wm.RootWindowContainer@b840de1 position = 2147483647, callstack =
11-07 22:44:41.645  1453  1580 W xxx200: java.lang.Throwable: xxx
11-07 22:44:41.645  1453  1580 W xxx200:     at com.android.server.wm.WindowContainer.positionChildAt(WindowContainer.java:931)
11-07 22:44:41.645  1453  1580 W xxx200:     at com.android.server.wm.WindowState.handleTapOutsideFocusInsideSelf(WindowState.java:6296)
11-07 22:44:41.645  1453  1580 W xxx200:     at com.android.server.wm.WindowManagerService.onPointerDownOutsideFocusLocked(WindowManagerService.java:8928)
11-07 22:44:41.645  1453  1580 W xxx200:     at com.android.server.wm.WindowManagerService.-$$Nest$monPointerDownOutsideFocusLocked(Unknown Source:0)
11-07 22:44:41.645  1453  1580 W xxx200:     at com.android.server.wm.WindowManagerService$H.handleMessage(WindowManagerService.java:5936)
11-07 22:44:41.645  1453  1580 W xxx200:     at android.os.Handler.dispatchMessage(Handler.java:106)
11-07 22:44:41.645  1453  1580 W xxx200:     at android.os.Looper.loopOnce(Looper.java:201)
11-07 22:44:41.645  1453  1580 W xxx200:     at android.os.Looper.loop(Looper.java:288)
11-07 22:44:41.645  1453  1580 W xxx200:     at android.os.HandlerThread.run(HandlerThread.java:67)
11-07 22:44:41.645  1453  1580 W xxx200:     at com.android.server.ServiceThread.run(ServiceThread.java:44)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2238969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多商户中英双语电商系统设计与开发 PHP+mysql

随着全球电商市场的扩展,多商户平台成为了越来越多商家参与全球贸易的重要方式。为了适应不同语言用户的需求,尤其是中英双语用户的需求,设计一个支持中英双语的电商系统显得尤为重要。本文将重点探讨如何设计一个多商户中英双语电商系统&…

Ansys Zemax | 手机镜头设计 - 第 4 部分:用LS-DYNA进行冲击性能分析

该系列文章将讨论智能手机镜头模组设计的挑战,从概念和设计到制造和结构变形分析。本文是四部分系列中的第四部分,它涵盖了相机镜头的显式动态模拟,以及对光学性能的影响。使用Ansys Mechanical和LS-DYNA对相机在地板上的一系列冲击和弹跳过程…

【JavaEE初阶】多线程上部

文章目录 本篇目标:一、认识线程(Thread)1.概念:2.创建线程 二、Thread 类及常见方法2.1 Thread 的常见构造方法2.2 Thread 的几个常见属性2.3 启动⼀个线程 - start()2.4 中断⼀个线程2.5 等待⼀个线程 - join()2.6 获取当前线程…

丹摩征文活动|智谱AI引领是实现文本可视化 - CogVideoX-2b 部署与使用

文章目录 前言一、DAMODEL平台特性二、创建CPU云实例三、CogVedioX介绍四、DAMODEL一键部署CogVideoX1. 创建丹摩实例(参考上述介绍)2. 配置环境和依赖3. 模拟与配置文件4. 开始运行4.1 调试4.2 webUI4.3 端口映射 前言 DAMODEL(丹摩智算)是一款专为满足…

MySQL的知识巩固

目录 三大范式 第一范式: 第二范式: 第三范式: 巴斯-科德范式(BCNF): 反范式: MySQL的工作原理 三大范式 第一范式: 一个字段只表明一个事情 优点: 数据一致性: 在1NF中,由于每个属性都是原子的,因此避免了在一个属性中存…

越野车TV 1.0.5337 | TV端越野赛车游戏,解锁无限金币

越野车TV是一款专为电视设计的越野赛车游戏,最初是安卓手机端的游戏,现已移植到TV端并兼容遥控器操作。这款游戏的特点是解锁了VIP,所有资源都可以免费使用。游戏采用3D横版卡通风格,提供真实的越野赛车体验。玩家可以在崎岖的赛道…

MySQL 迁移 dm

参考链接 此处为语雀内容卡片,点击链接查看:MySQL 5.7.27 迁移 DM 8 语雀 迁移前准备 以下中的命名,密码都是可修改的,这里给出的就只是一个例子 创建表空间 # 创建表空间名为 dbTest,路径为 Z:\fei\data\dm\dbT…

信息安全工程师(82)操作系统安全概述

一、操作系统安全的概念 操作系统安全是指操作系统在基本功能的基础上增加了安全机制与措施,从而满足安全策略要求,具有相应的安全功能,并符合特定的安全标准。在一定约束条件下,操作系统安全能够抵御常见的网络安全威胁&#xff…

从0开始学习Linux——文件管理

往期目录: 从0开始学习Linux——简介&安装 从0开始学习Linux——搭建属于自己的Linux虚拟机 从0开始学习Linux——文本编辑器 从0开始学习Linux——Yum工具 从0开始学习Linux——远程连接工具 从0开始学习Linux——文件目录 从0开始学习Linux——网络配置 从0开…

vue中调用全屏方法、 elementUI弹框在全屏模式下不出现问题、多级嵌套弹框蒙层遮挡问题等处理与实现方案

全屏模式下弹框不展示的原因是elementUI的弹框我们让他挂在body中了,而我们全屏的div盒子不是整个文档,这时候就找不到弹框了。 当我们把弹框改为插入到父元素上 这时候会出现蒙层盖住整个页面,什么也点不了的问题。 这是elementUI官方的一个…

特征检测与特征匹配方法笔记+代码分享

在一幅图像中,总能发现其独特的像素点,这些点可以被视为该图像的特征,我们称之为特征点。在计算机视觉领域中,基于特征点的图像特征匹配是一项至关重要的任务,因此,如何定义并识别一幅图像中的特征点显得尤…

补: 力扣145 : 二叉树的后序遍历

天才的回归 ---- 二叉树的后序遍历 描述: **给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 ** 示例: 解法:递归就不说了,看下遍历法,与先序和中序略有不同 简单来说注意两个点: 1&…

Centos8 安装 JDK / Python / MySQL / Redis / Nginx

安装 JDK 华为镜像 JDK 下载地址:https://repo.huaweicloud.com:8443/artifactory/java-local/jdk/ 这里安装 JDK8 为例: # 这里直接通过 wget 下载 wget https://repo.huaweicloud.com:8443/artifactory/java-local/jdk/8u202-b08/jdk-8u202-linux-x…

使用轻易云平台高效集成聚水潭与南网订单数据

高效实现聚水潭与南网供应商对接的数据集成方案 普通发货对接南网供应商配送通知接口 在现代数据集成项目中,如何高效、可靠地实现不同系统之间的数据对接是一个关键挑战。本文将聚焦于一个实际案例:将聚水潭平台的数据集成到南方电网商城平台&#xff…

【经验分享】一招解决VMware虚拟机存储空间越来越大的问题

【经验分享】一招解决VMware虚拟机硬盘空间越来越大的问题 前言一、解决办法二、补充说明 前言 在使用虚拟机过程中,会出现用着用着虚拟机硬盘占用空间越来越大的问题。即使删除了文件,依然会占用宿主机的硬盘空间。如果虚拟机一开始分配的硬盘空间过大…

使用Element UI实现一个拖拽图片上传,并可以Ctrl + V获取图片实现文件上传

要在 Element UI 的拖拽上传组件中实现 Ctrl V 图片上传功能,可以通过监听键盘事件来捕获粘贴操作,并将粘贴的图片数据上传到服务器。 版本V1,实现获取粘贴板中的文件 注意,本案例需要再你已经安装了Element UI并在项目中正确配…

Ascend Extension for PyTorch是个what?

1 Ascend Extension for PyTorch Ascend Extension for PyTorch 插件是基于昇腾的深度学习适配框架,使昇腾NPU可以支持PyTorch框架,为PyTorch框架的使用者提供昇腾AI处理器的超强算力。 项目源码地址请参见Ascend/Pytorch。 昇腾为基于昇腾处理器和软…

strtok_s详解,实现使用strtok_s分割字符串,并返回包含分割符的子串

1.strtok_s函数原型 strtok_s 是一个线程安全的字符串分割函数,它是 strtok 的一个变体,用于将字符串分割成一系列的标记(tokens)。与 strtok 不同,strtok_s 需要一个额外的参数来保存上下文信息,这样它就…

Docker--Docker是什么和对Docker的了解

Docker 的本质 Docker的本质是LXC(Linux容器)之类的增强版,它本身不是容器,而是容器的易用工具。 Docker通过虚拟化技术,将代码、依赖项和运行环境打包成一个容器,并利用隔离机制来使得容器之间互相独立、…

大数据新视界 -- 大数据大厂之 Impala 性能优化:优化数据加载的实战技巧(下)(16/30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…