安卓冻屏bug案例作业分享-千里马学员wms+input实战作业

server/2024/10/19 6:42:47/

背景:

近期有学员反馈在aosp14高版本上有了一个新窗口TaskBar,这个但是有需求就是对这个TaskBar进行隐藏,所以有一个需要对这个TaskBar进行进行隐藏需求
在这里插入图片描述

隐藏TaskBar需求做了之后发现有如下bug
冻屏问题复现图

问题复现步骤:

因为要实现一个对TaskBar隐藏需求功能,所以这里需要先实现这个需求,正因为实现这个需求后才发现可以复现这个冻屏问题。
普通模拟器需要看到TaskBar
这里普通的手机是无法看到TaskBar,需要进行相关density进行设置,变成平板设备才可以
一般aosp14_r15编译lunch sdk_phone_x86_64后起来后需要再执行一下命令才可以变成平板的显示模式。

adb shell wm density 240

执行后画面变成如下:
在这里插入图片描述

修改隐藏TaskBar
只需要TaskbarActivityContext中对mDragLayer进行隐藏,patch如下

test:~/disk2/aosp14/packages/apps/Launcher3$ git diff quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
index a1390aeabb..b3bf3dc283 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
@@ -17,6 +17,7 @@ package com.android.launcher3.taskbar;import static android.content.pm.PackageManager.FEATURE_PC;import static android.os.Trace.TRACE_TAG_APP;
+import static android.view.View.GONE;import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
@@ -294,6 +295,7 @@ public class TaskbarActivityContext extends BaseTaskbarContext {} else {mWindowManager.updateViewLayout(mDragLayer, mWindowLayoutParams);}
+       mDragLayer.setVisibility(GONE);}/**

问题复现步骤
1、设备切换成导航手势模式
2、打开一个短信应用
3、导航手势慢慢上滑一点点距离,然后松开手势不上滑,就可以复现冻屏问题

作业要求

整个作业要求完成以下几个部分,可以按照实现部分得分

1、要求分析出冻屏的原因是什么,为什么画面变得无法触摸

2、分析出来了冻屏原因,再考虑怎么屏蔽TaskBar就会用法该bug,为啥TaskBar存在就不会有该bug

3、给出修改方案,实现屏蔽TaskBar依旧不会产生冻屏问题

更多framework详细代码和资料参考如下链接
投屏专题部分:

https://mp.weixin.qq.com/s/IGm6VHMiAOPejC_H3N_SNg

hal+perfetto+surfaceflinger

https://mp.weixin.qq.com/s/LbVLnu1udqExHVKxd74ILg
其他课程七件套专题:在这里插入图片描述
点击这里
https://mp.weixin.qq.com/s/Qv8zjgQ0CkalKmvi8tMGaw

视频试看:
https://www.bilibili.com/video/BV1wc41117L4/

参考相关链接:
https://blog.csdn.net/zhimokf/article/details/137958615

更多framework假威风耗:androidframework007


http://www.ppmy.cn/server/132973.html

相关文章

Error BackPropagation(误差逆传播)

误差逆传播(反向传播,BP算法) 引言E 误差逆传播算法(Error BackPropagation,BP)是神经网络中常用的传播算法(又叫做反向传播)。BP算法可以应用于多层前馈神经网络(FFN)以及其他类型的网络,如训练递归神经…

Scala的sortedWith

sortedWith:基于函数的排序,通过一个comparator函数,实现自定义排序的逻辑。 sortWith方法: 它使用传入的比较函数对集合进行排序。 在排序过程中,根据比较函数的返回值来决定元素的顺序。 如果比较函数返回true&…

如何通过Chrome设置保护你的在线隐私

在当今数字时代,保护个人隐私和在线安全变得尤为重要。谷歌浏览器作为全球最受欢迎的网络浏览器之一,提供了多种功能来帮助用户保护自己的在线隐私。本教程将指导你如何通过谷歌浏览器设置来提高你的在线隐私保护水平。(本文由https://www.li…

穿越沙漠问题

题目:一辆吉普车穿越1000km的沙漠。吉普车的总装油量为500L,耗油率为1L/km。由于沙漠中没有油库,必须先用这辆车在沙漠中建立临时油库。若吉普车用最少的耗油量穿越沙漠,应在哪些地方建立油库,以及各处存储的油量是多少…

PyQt入门指南二十二 QSlider滑块组件应用实例

在PyQt中,QSlider 是一个非常实用的组件,它允许用户通过拖动滑块来选择一个值的范围内的特定值。下面是一个简单的实例,展示了如何使用 QSlider 组件。 首先,确保你已经安装了 PyQt5。如果没有安装,可以使用 pip 进行…

基于深度学习的进化神经网络设计

基于深度学习的进化神经网络设计(Evolutionary Neural Networks, ENNs)结合了进化算法(EA)和神经网络(NN)的优点,用于自动化神经网络架构的设计和优化。通过模拟自然进化的选择、变异、交叉等过…

复习:JavaScript 中的原型

在 JavaScript 中,原型(Prototype)是一个非常核心且强大的概念,它主要用在对象继承的实现上。理解原型和原型链,对于深入理解 JavaScript 的面向对象编程至关重要。 1. 什么是原型? 每个 JavaScript 对象…

从开发板传送文件回本地

1.从开发板传送文件 rsync -avz --progress -e “ssh -p 134” --exclude ‘*.mp4’ nvidialab.mlboy.site:~/from30t/flask/recorder ~/zz_xiangmmu/uav_result