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

背景:

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

隐藏TaskBar需求做了之后发现有如下bug:

问题复现步骤:

因为要实现一个对TaskBar隐藏需求功能,所以这里需要先实现这个需求,正因为实现这个需求后才发现可以复现这个冻屏问题。
普通模拟器需要看到TaskBar

这里普通的手机是无法看到TaskBar,需要进行相关density进行设置,变成平板设备才可以

一般aosp14_r15编译lunch sdk_phone_x86_64后起来后需要再执行一下命令才可以变成平板的显示模式。

cpp 复制代码
adb shell wm density 240

执行后画面变成如下:

修改隐藏TaskBar

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

cpp 复制代码
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

相关推荐
踢球的打工仔19 小时前
PHP面向对象(7)
android·开发语言·php
安卓理事人19 小时前
安卓socket
android
安卓理事人1 天前
安卓LinkedBlockingQueue消息队列
android
万能的小裴同学1 天前
Android M3U8视频播放器
android·音视频
q***57741 天前
MySql的慢查询(慢日志)
android·mysql·adb
JavaNoober1 天前
Android 前台服务 "Bad Notification" 崩溃机制分析文档
android
城东米粉儿1 天前
关于ObjectAnimator
android
zhangphil1 天前
Android渲染线程Render Thread的RenderNode与DisplayList,引用Bitmap及Open GL纹理上传GPU
android
火柴就是我1 天前
从头写一个自己的app
android·前端·flutter
lichong9511 天前
XLog debug 开启打印日志,release 关闭打印日志
android·java·前端