Bug #118680

【IOVDEV-33342】【内部】【VC1】【0106】【台架】【EE环境】【副屏】【设置】跑完monkey后,进入底层多任务栏,顶部状态栏不稳定,会消失不见

Added by CDTS_Test 吴诗雨 about 2 years ago. Updated almost 2 years ago.

Status:CLOSEDStart date:2023-06-08
Priority:NormalDue date:
Assignee:CDTS_Test 吴诗雨% Done:

0%

Category:依赖客户及其供应商解决
Target version:-
Need_Info:-- Found Version:【中控版本号】:03.02.0088.C103

【副屏版本号】:01.00.0106(01.00.0104)
Resolution:-- Degrated:--
Severity:Normal Verified Version:
Reproducibility:Every time Fixed Version:
Test Type:ST Root cause:

Description

环境信息】EE环境
【问题出现时间】:20230608 08:54
【前提条件】:副屏上电,中控已连接,前一晚执行的monkey,执行monkey时副屏有以下第三方应用(华为应用市场、哔哩哔哩、今日头条、京东、喜马拉雅、保卫萝卜、抖音、瓜子二手车、腾讯新闻、微博、大众点评、腾讯视频、优酷视频、云听、网易云音乐、喜马拉雅、王者荣耀、和平精英)
【操作步骤】
1.前一晚执行monkey,早上来到之后monkey正常运行

【实际结果】
1.进入底层多任务栏,顶部状态栏不稳定,会消失不见
【期望结果】
1.副屏各界面显示正常

【备注】:
【当前开机次数】:167
【应用版本】:
【硬件版本号】:

【VIN】HRYTTESTVINMGM401
【中控版本号】:03.02.0088.C103

【副屏版本号】:01.00.0106(01.00.0104)

IOVDEV-33342.zip (5.64 MB) CDTS_Test 吴诗雨, 2023-06-08 19:25

飞书20230614-154408.mp4 (1.13 MB) CD FW-周羚洛, 2023-06-14 16:09

History

#2 Updated by CD APP-王营 about 2 years ago

  • Status changed from New to ASSIGNED
  • Assignee changed from CD APP-王营 to CD APP-王宏

#3 Updated by CD APP-王宏 about 2 years ago

  • Category changed from CD-APP to CD-FW
  • Assignee changed from CD APP-王宏 to CD FW-廖涛

Hi 廖涛,
麻烦看一下这个是怎么回事。

在Recent中的滑动是不会触发状态栏的修改的,
我在NavigationBar#updateBarMode(int barMode) 中加的日志没有触发。

#4 Updated by CD FW-廖涛 about 2 years ago

  • Assignee changed from CD FW-廖涛 to CD FW-周羚洛

#5 Updated by CD FW-周羚洛 about 2 years ago

■ 我的分析
关于statusbar中的图标控制是在
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java
修改该文件的提交与该问题有相关性的就只有一个
https://dev.thundercomm.com/gerrit/c/general/platform/frameworks/base/+/143299
在该提交里面对图标进行了重新结构,因此可以存在问题的是

frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpAppearanceController.java
------------------------------------------------------------------------------------
183      private void updateTopEntry() {
184          NotificationEntry newEntry = null;
185          if (shouldBeVisible()) {
186              newEntry = mHeadsUpManager.getTopEntry();
187          }
188          NotificationEntry previousEntry = mHeadsUpStatusBarView.getShowingEntry();
189          mHeadsUpStatusBarView.setEntry(newEntry);
190          if (newEntry != previousEntry) {
191              boolean animateIsolation = false;
192              if (newEntry == null) {
193                  // no heads up anymore, lets start the disappear animation
194  
195                  setShown(false);
196                  animateIsolation = !mIsExpanded;
197              } else if (previousEntry == null) {
198                  // We now have a headsUp and didn't have one before. Let's start the disappear
199                  // animation
200                  setShown(true);
201                  animateIsolation = !mIsExpanded;
202              }
203              updateIsolatedIconLocation(false /* requireUpdate */);
204              // HeadUp Notification will dismiss notification and clock,We no need this func
205              //mNotificationIconAreaController.showIconIsolated(newEntry == null ? null        ★
206              //        : newEntry.getIcons().getStatusBarIcon(), animateIsolation);        ★
207          }
208      }
------------------------------------------------------------------------------------

frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java
------------------------------------------------------------------------------------
438      public void calculateIconTranslations() {
         ...
         ...
473  /*
474              if (firstOverflowIndex == -1 && (forceOverflow || isOverflowing)) {           ★
475                  firstOverflowIndex = noOverflowAfter && !forceOverflow ? i - 1 : i;       ★
476                  mVisualOverflowStart = layoutEnd - mOverflowWidth;       ★
477                  if (forceOverflow || mIsStaticLayout) {       ★
478                      mVisualOverflowStart = Math.min(translationX, mVisualOverflowStart);       ★
479                  }
480              }
481  */
------------------------------------------------------------------------------------

这两处可能会产生该问题。

■ 下一步计划
revert这两处,查看影响度,并测试查看是否可以修复该问题。

#6 Updated by CD FW-周羚洛 about 2 years ago

■ 我的分析
我使用0530复现了这个问题。最近的版本对性能做过优化,因此我将使用最新的版本,再次验证该问题
■ 下一步计划
使用最新的版本验证是否还存在该问题。

#7 Updated by CD FW-周羚洛 about 2 years ago

■ 我的分析
测试步骤:1.运行monkey 2.进入底层多任务栏,顶部状态栏不稳定,会消失不见 视屏:IOVDEV-33342.zip
使用0530版本通过测试我也复现了问题,视屏:飞书20230614-154408.mp4
使用0614版本测试5次没有复现该问题。
通过我的测试视屏可知:整个状态栏有一个图标没有闪烁,其他图标都在闪烁。
通过测试同学给的视屏可知:整个状态栏都在闪烁。
我通过adb shell pkill SystemUI 杀死SystemUI之后,还是会复现整个问题,并且我在状态栏的地方打印日志,也没有日志输出,因此认为和SystemUI没有关系。
通过测试的视屏和我的视屏可以大概知道是 SurfaceFlinger的问题, 要么是硬件加速产生导致的,或者是系统性能问题。

Framework在这次之前的一周对系统做过优化,优化了系统,并且历史APP界面只保存了三个历史APP,而之前是保存64个历史APP,因此测试手法也发生了改变。

■ 下一步计划
请测试同学帮忙使用最新的版本验证是否还会有该问题,如果存在该问题。请使用以下步骤,查看是否还存在该问题。
1.打开开发者
adb shell settings put global development_settings_enabled 1
2.打开硬件加速或者关闭硬件加速,检查是否还有该问题
打开硬件加速:adb shell settings put global hardware_accelerated_rendering 1
关闭硬件加速:adb shell settings put global hardware_accelerated_rendering 0
3.使用电脑软件scrcpy连接副屏进行投屏,检查scrcpy是否有这个问题。(只要是投屏软件都可以)

#9 Updated by CD FW-廖涛 about 2 years ago

  • Category changed from CD-FW to 依赖客户及其供应商解决
  • Status changed from ASSIGNED to NEED_INFO
  • Assignee changed from CD FW-周羚洛 to CDTS_Test 吴诗雨

已在 JIRA 回复,需要客户那边使用新版本测试,看是否能复现问题。

#10 Updated by CDTS_Test 吴诗雨 almost 2 years ago

  • Status changed from NEED_INFO to RESOLVED

#11 Updated by CDTS_Test 吴诗雨 almost 2 years ago

  • Status changed from RESOLVED to VERIFIED

#12 Updated by CDTS_Test 吴诗雨 almost 2 years ago

  • Status changed from VERIFIED to CLOSED

Also available in: Atom PDF