Bug #115895
测试 Test-IT #111062: V3.0功能测试
测试 Test-IT #111069: AF-V3.0--Launcher/SystemUI-小窗模式入口
【AF】【EVT】【小窗模式】使用微信进入mini小窗模式,上滑删除时屏幕卡顿且等待2分钟设备直接重启
Status: | CLOSED | Start date: | 2023-02-04 | |
---|---|---|---|---|
Priority: | Immediate | Due date: | ||
Assignee: | 物联网测试组_CDTS 段小刚 | % Done: | 0% | |
Category: | 窗口定制 | |||
Target version: | - | |||
Need_Info: | TEST | Found Version: | FlatBuild_HH_VX1_MCE_FSE.M.D.user.01.00.X101.202302030336 | |
Resolution: | FIXED | Degrated: | -- | |
Severity: | Normal | Verified Version: | FlatBuild_HH_VX1_MCE_FSE.M.R.user.01.00.0072.X101 | |
Reproducibility: | Every time | Fixed Version: | ||
Test Type: | IT | Root cause: | 当小窗拖拽结束后,如果是向上滑动会先销毁小窗,接着走endDrag的流程,在endDrag中会以动画的形式(startFreeformMoveAnimation)来缩放小窗.
一般来说是没有问题的,因为在startFreeformMoveAnimation之前会先检查Activity是不是Non finish的状态,但是微信应用,它在被kill之后,一直在不停的重启,重启app的时候也会播放启动动画,所以就有可能造成某次Activity不是处于finish状态,调用startFreeformMoveAnimation播放小窗的缩放动画,但是这个时候重启app的动画也要播放,它们之间会竞争锁,因为在播放动画的时候在apply方法中都会先拿到lock,很容易就造成死锁. |
Description
【前提条件】
1、设备的正常启动
2、安装微信
【测试步骤】
1、打开 微信应用的小窗模式
2、进入迷你小窗模式
3、将mini小窗拖动到右上角
4、再将小窗往超出屏幕上部滑动
【预期结果】
4、mini小窗被删除
【实际结果】
4、屏幕卡住,点击不生效,等待两分钟直接重启
【复现率】
3/3
History
#1 Updated by CD FW 曹覃刚 over 2 years ago
- Category changed from CD-FW to 窗口定制
- Status changed from New to ASSIGNED
#2 Updated by CD FW-鲁凯峰 over 2 years ago
从日志信息看,是主线程被阻塞后,导致WatchDog杀死系统进程,从而导致的重启
02-06 10:32:30.712 1037 1192 W Watchdog: *** WATCHDOG KILLING SYSTEM PROCESS: Blocked in monitor com.android.server.wm.WindowManagerService on foreground thread (android.fg), Blocked in handler on display thread (android.display), Blocked in handler on animation thread (android.anim), Blocked in handler on surface animation thread (android.anim.lf)
02-06 10:32:30.712 1037 1192 W Watchdog: android.fg annotated stack trace:
#3 Updated by CD FW-鲁凯峰 over 2 years ago
- Root cause set to 当小窗拖拽结束后,如果是向上滑动会先销毁小窗,接着走endDrag的流程,在endDrag中会以动画的形式(startFreeformMoveAnimation)来缩放小窗. 一般来说是没有问题的,因为在startFreeformMoveAnimation之前会先检查Activity是不是Non finish的状态,但是微信应用,它在被kill之后,一直在不停的重启,重启app的时候也会播放启动动画,所以就有可能造成某次Activity不是处于finish状态,调用startFreeformMoveAnimation播放小窗的缩放动画,但是这个时候重启app的动画也要播放,它们之间会竞争锁,因为在播放动画的时候在apply方法中都会先拿到lock,很容易就造成死锁.
■ Current conclusion
问题已经解决
■ My analysis
当小窗拖拽结束后,如果是向上滑动会先销毁小窗,接着走endDrag的流程,在endDrag中会以动画的形式(startFreeformMoveAnimation)来缩放小窗.
一般来说是没有问题的,因为在startFreeformMoveAnimation之前会先检查Activity是不是Non finish的状态,但是微信应用,它在被kill之后,一直在不停的重启,可能造成某次重启时Activity不是处于finish状态,所以会调用startFreeformMoveAnimation播放小窗的缩放动画,但是这个时候重启activity的也会播放动画,它们之间会竞争锁,因为在播放动画的时候在apply方法中都会去拿lock,很容易就造成死锁. 导致线程android.anim被阻塞,然后被WatchDog Kill调用,引起手机重启
解决方法就是
1.如果是要上滑finish掉小窗,就不走endDrag流程,因为小窗都要被销毁了,再次缩放小窗没有意义
2.在finish小窗的时候,参考AOSP销毁小窗的流程,以FINISH_TASK_WITH_ACTIVITY的形式走finishActivity流程
■ Submit URL
https://dev.thundercomm.com/gerrit/c/general/platform/frameworks/base/+/179582
#4 Updated by IoT scm over 2 years ago
ID | Project | Branch | Uploader |
179582 | general/platform/frameworks/base | Pre_figure_turbox-c2130c-la1.1-qssi12-dev | lukf0916@thundersoft.com |
AF:MultiWindow: fix dead lock in small window resize the small window while the small is finishing,some activity will be relaunched when you finisn it and this caused the dead lock in thead android.anim, because the FreeformAnimation will hold the lock,but the animation isn't done and next animation is starting, so the phone restarted TC-RID: 1201-0204601 IssueID: TS-R-BUG-115895 Change-Id: I78bd4b2a17f4f8248fdbcde09e3bcc9379dc455c |
#5 Updated by CD FW-鲁凯峰 over 2 years ago
- Status changed from ASSIGNED to RESOLVED
- Assignee changed from CD FW-鲁凯峰 to 物联网测试组_CDTS 段小刚
- Resolution changed from -- to FIXED
#6 Updated by 物联网测试组_CDTS 段小刚 over 2 years ago
- Status changed from RESOLVED to VERIFIED
- Verified Version set to FlatBuild_HH_VX1_MCE_FSE.M.R.user.01.00.0072.X101
验证结果:mini小窗在上滑超出一半后会进行删除——Pass
#7 Updated by 物联网测试组_CDTS 段小刚 over 2 years ago
- Status changed from VERIFIED to CLOSED