Mr.Alright---安卓Q Launcher3 Hotseat图标偶现不可点击

客户的反馈是:hotseat的图标点击没有反应,经过一系列的复现发现了一个问题

问题的实际现象:蓝框是hotseat图标的范围,出现问题的时候,绿框范围可以正常跳转App,而黄框的范围无法跳转App

 

Mr.Alright---安卓Q Launcher3 Hotseat图标偶现不可点击_第1张图片

猜测:从现象来看可能是被黄色框框盖在上面导致的,但是不能肯定,因为正常点击的时候黄色范围也是盖在上面的,为了找到问题的原因,只能先猜就是这个原因,然后再去验证是不是这个原因

验证猜测:

  1. 添加log,怎样添加log,在什么地方添加什么log,这是关键。首先,肯定在点击事件的地方添加,然后把相应的debug log都打开,然而发现这些log只能判断确实是走到launcher,但是并不能断定黄色部分具体是什么。

接着继续加log,这次我着重在launcher里面加log,所有的onInterceptTouchEvent,onTouchEvent,dispatchTouchEvent,添加相应的逻辑。

      2. 复现问题,log都埋好了,总是要新抓到log才可以吧。然后就复现了大半天,期间有客户的误导,什么要插卡,不能开报点之类的,后面也有要等灭屏,重启的误导,发现依然无法复现,于是就根据猜想,是不是allapp的view,

顺着这个思路,最终早到了复现的办法。(打开所有App页面,点击一个应用,按下home键的同时,快速的点击屏幕

      3. 分析log

正常的点击事件 
2021-02-02 10:43:23.540 7045-7045/com.android.launcher3 D/HZH: dispatchTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\LauncherRootView.java
2021-02-02 10:43:23.540 7045-7045/com.android.launcher3 D/b/132900132: BaseDragLayer.dispatchTouchEvent MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=368.48822, y[0]=1401.1018, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1529790, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.540 7045-7045/com.android.launcher3 D/HZH: onInterceptTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\views\BaseDragLayer.java
2021-02-02 10:43:23.540 7045-7045/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 1 MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=368.48822, y[0]=1401.1018, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1529790, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.541 7045-7045/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 2 
2021-02-02 10:43:23.541 7045-7045/com.android.launcher3 D/b/132900132: AllAppsContainerView.dispatchTouchEvent MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=368.48822, y[0]=33.101807, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1529790, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.541 7045-7045/com.android.launcher3 D/HZH: onInterceptTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\allapps\AllAppsContainerView.java
2021-02-02 10:43:23.541 7045-7045/com.android.launcher3 D/HZH: onTouchEvent: 22Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\allapps\AllAppsContainerView.java
2021-02-02 10:43:23.541 7045-7045/com.android.launcher3 D/HZH: onTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\views\ScrimView.java
2021-02-02 10:43:23.541 7045-7045/com.android.launcher3 D/HZH: onInterceptTouchEvent:false  celllayout
2021-02-02 10:43:23.541 7045-7045/com.android.launcher3 D/b/132900132: BubbleTextView.onTouchEvent MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=77.48822, y[0]=125.10181, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1529790, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.603 7045-7045/com.android.launcher3 D/HZH: dispatchTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\LauncherRootView.java
2021-02-02 10:43:23.603 7045-7045/com.android.launcher3 D/b/132900132: BaseDragLayer.dispatchTouchEvent MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=368.48822, y[0]=1401.1018, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1529854, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.603 7045-7045/com.android.launcher3 D/HZH: onInterceptTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\views\BaseDragLayer.java
2021-02-02 10:43:23.603 7045-7045/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 1 MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=368.48822, y[0]=1401.1018, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1529854, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.603 7045-7045/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 2 
2021-02-02 10:43:23.604 7045-7045/com.android.launcher3 D/b/133867119: onTouchEvent 1
2021-02-02 10:43:23.604 7045-7045/com.android.launcher3 D/HZH: onInterceptTouchEvent:false  celllayout
2021-02-02 10:43:23.604 7045-7045/com.android.launcher3 D/b/132900132: BubbleTextView.onTouchEvent MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=77.48822, y[0]=125.10181, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1529854, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.620 7045-7045/com.android.launcher3 D/HZH: dispatchTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\LauncherRootView.java
2021-02-02 10:43:23.620 7045-7045/com.android.launcher3 D/b/132900132: BaseDragLayer.dispatchTouchEvent MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=368.48822, y[0]=1401.1018, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1529871, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.620 7045-7045/com.android.launcher3 D/HZH: onInterceptTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\views\BaseDragLayer.java
2021-02-02 10:43:23.620 7045-7045/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 1 MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=368.48822, y[0]=1401.1018, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1529871, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.620 7045-7045/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 2 
2021-02-02 10:43:23.621 7045-7045/com.android.launcher3 D/b/133867119: onTouchEvent 1
2021-02-02 10:43:23.621 7045-7045/com.android.launcher3 D/HZH: onInterceptTouchEvent:false  celllayout
2021-02-02 10:43:23.621 7045-7045/com.android.launcher3 D/b/132900132: BubbleTextView.onTouchEvent MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=77.48822, y[0]=125.10181, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1529871, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.637 7045-7045/com.android.launcher3 D/HZH: dispatchTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\LauncherRootView.java
2021-02-02 10:43:23.638 7045-7045/com.android.launcher3 D/b/132900132: BaseDragLayer.dispatchTouchEvent MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=368.48822, y[0]=1401.1018, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1529888, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.638 7045-7045/com.android.launcher3 D/HZH: onInterceptTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\views\BaseDragLayer.java
2021-02-02 10:43:23.638 7045-7045/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 1 MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=368.48822, y[0]=1401.1018, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1529888, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.638 7045-7045/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 2 
2021-02-02 10:43:23.638 7045-7045/com.android.launcher3 D/b/133867119: onTouchEvent 1
2021-02-02 10:43:23.638 7045-7045/com.android.launcher3 D/HZH: onInterceptTouchEvent:false  celllayout
2021-02-02 10:43:23.638 7045-7045/com.android.launcher3 D/b/132900132: BubbleTextView.onTouchEvent MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=77.48822, y[0]=125.10181, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1529888, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.655 7045-7045/com.android.launcher3 D/HZH: dispatchTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\LauncherRootView.java
2021-02-02 10:43:23.655 7045-7045/com.android.launcher3 D/b/132900132: BaseDragLayer.dispatchTouchEvent MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=368.48822, y[0]=1401.1018, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1529905, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.655 7045-7045/com.android.launcher3 D/HZH: onInterceptTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\views\BaseDragLayer.java
2021-02-02 10:43:23.655 7045-7045/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 1 MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=368.48822, y[0]=1401.1018, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1529905, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.655 7045-7045/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 2 
2021-02-02 10:43:23.655 7045-7045/com.android.launcher3 D/b/133867119: onTouchEvent 1
2021-02-02 10:43:23.656 7045-7045/com.android.launcher3 D/HZH: onInterceptTouchEvent:false  celllayout
2021-02-02 10:43:23.656 7045-7045/com.android.launcher3 D/b/132900132: BubbleTextView.onTouchEvent MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=77.48822, y[0]=125.10181, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1529905, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.671 7045-7045/com.android.launcher3 D/HZH: dispatchTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\LauncherRootView.java
2021-02-02 10:43:23.671 7045-7045/com.android.launcher3 D/b/132900132: BaseDragLayer.dispatchTouchEvent MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=368.48822, y[0]=1401.1018, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1529921, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.671 7045-7045/com.android.launcher3 D/HZH: onInterceptTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\views\BaseDragLayer.java
2021-02-02 10:43:23.671 7045-7045/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 1 MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=368.48822, y[0]=1401.1018, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1529921, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.671 7045-7045/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 2 
2021-02-02 10:43:23.671 7045-7045/com.android.launcher3 D/b/133867119: onTouchEvent 1
2021-02-02 10:43:23.671 7045-7045/com.android.launcher3 D/HZH: onInterceptTouchEvent:false  celllayout
2021-02-02 10:43:23.672 7045-7045/com.android.launcher3 D/b/132900132: BubbleTextView.onTouchEvent MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=77.48822, y[0]=125.10181, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1529921, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.688 7045-7045/com.android.launcher3 D/HZH: dispatchTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\LauncherRootView.java
2021-02-02 10:43:23.688 7045-7045/com.android.launcher3 D/b/132900132: BaseDragLayer.dispatchTouchEvent MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=368.48822, y[0]=1401.1018, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1529938, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.688 7045-7045/com.android.launcher3 D/HZH: onInterceptTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\views\BaseDragLayer.java
2021-02-02 10:43:23.688 7045-7045/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 1 MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=368.48822, y[0]=1401.1018, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1529938, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.688 7045-7045/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 2 
2021-02-02 10:43:23.688 7045-7045/com.android.launcher3 D/b/133867119: onTouchEvent 1
2021-02-02 10:43:23.688 7045-7045/com.android.launcher3 D/HZH: onInterceptTouchEvent:false  celllayout
2021-02-02 10:43:23.689 7045-7045/com.android.launcher3 D/b/132900132: BubbleTextView.onTouchEvent MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=77.48822, y[0]=125.10181, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1529938, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.701 7045-7045/com.android.launcher3 D/HZH: dispatchTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\LauncherRootView.java
2021-02-02 10:43:23.702 7045-7045/com.android.launcher3 D/b/132900132: BaseDragLayer.dispatchTouchEvent MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=368.48822, y[0]=1401.1018, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1529940, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.702 7045-7045/com.android.launcher3 D/HZH: onInterceptTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\views\BaseDragLayer.java
2021-02-02 10:43:23.702 7045-7045/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 1 MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=368.48822, y[0]=1401.1018, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1529940, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.702 7045-7045/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 2 
2021-02-02 10:43:23.702 7045-7045/com.android.launcher3 D/b/133867119: onTouchEvent 1
2021-02-02 10:43:23.702 7045-7045/com.android.launcher3 D/HZH: onInterceptTouchEvent:false  celllayout
2021-02-02 10:43:23.702 7045-7045/com.android.launcher3 D/b/132900132: BubbleTextView.onTouchEvent MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=77.48822, y[0]=125.10181, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1529940, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.704 7045-7045/com.android.launcher3 D/HZH: dispatchTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\LauncherRootView.java
2021-02-02 10:43:23.705 7045-7045/com.android.launcher3 D/b/132900132: BaseDragLayer.dispatchTouchEvent MotionEvent { action=ACTION_UP, actionButton=0, id[0]=0, x[0]=368.48822, y[0]=1401.1018, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1529957, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.705 7045-7045/com.android.launcher3 D/HZH: onInterceptTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\views\BaseDragLayer.java
2021-02-02 10:43:23.705 7045-7045/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 1 MotionEvent { action=ACTION_UP, actionButton=0, id[0]=0, x[0]=368.48822, y[0]=1401.1018, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1529957, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.705 7045-7045/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 2 
2021-02-02 10:43:23.705 7045-7045/com.android.launcher3 D/HZH: onInterceptTouchEvent:false  celllayout
2021-02-02 10:43:23.706 7045-7045/com.android.launcher3 D/b/132900132: BubbleTextView.onTouchEvent MotionEvent { action=ACTION_UP, actionButton=0, id[0]=0, x[0]=77.48822, y[0]=125.10181, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1529957, downTime=1529790, deviceId=1, source=0x1002, displayId=0 }
2021-02-02 10:43:23.708 7045-7045/com.android.launcher3 D/b/132900132: onClick 1
2021-02-02 10:43:23.709 7045-7045/com.android.launcher3 D/b/132900132: startAppShortcutOrInfoActivity
2021-02-02 10:43:23.713 7045-7045/com.android.launcher3 D/b/132900132: startActivitySafely outer
2021-02-02 10:43:23.713 7045-7045/com.android.launcher3 D/b/132900132: startActivitySafely 1
2021-02-02 10:43:23.715 7045-7045/com.android.launcher3 D/b/132900132: startActivitySafely 2
异常的点击事件
2021-02-02 11:10:48.681 9228-9228/com.android.launcher3 D/HZH: dispatchTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\LauncherRootView.java
2021-02-02 11:10:48.681 9228-9228/com.android.launcher3 D/b/132900132: BaseDragLayer.dispatchTouchEvent MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=351.5118, y[0]=1391.1083, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1064840, downTime=1064840, deviceId=3, source=0x1002, displayId=0 }
2021-02-02 11:10:48.681 9228-9228/com.android.launcher3 D/HZH: onInterceptTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\views\BaseDragLayer.java
2021-02-02 11:10:48.682 9228-9228/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 1 MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=351.5118, y[0]=1391.1083, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1064840, downTime=1064840, deviceId=3, source=0x1002, displayId=0 }
2021-02-02 11:10:48.682 9228-9228/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 2 
2021-02-02 11:10:48.682 9228-9228/com.android.launcher3 D/b/132900132: AllAppsContainerView.dispatchTouchEvent MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=351.5118, y[0]=23.108276, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1064840, downTime=1064840, deviceId=3, source=0x1002, displayId=0 }
2021-02-02 11:10:48.682 9228-9228/com.android.launcher3 D/HZH: onInterceptTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\allapps\AllAppsContainerView.java
2021-02-02 11:10:48.683 9228-9228/com.android.launcher3 D/HZH: onTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\allapps\AllAppsContainerView.java
2021-02-02 11:10:48.711 9228-9228/com.android.launcher3 D/HZH: dispatchTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\LauncherRootView.java
2021-02-02 11:10:48.711 9228-9228/com.android.launcher3 D/b/132900132: BaseDragLayer.dispatchTouchEvent MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=351.5118, y[0]=1391.1083, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1064871, downTime=1064840, deviceId=3, source=0x1002, displayId=0 }
2021-02-02 11:10:48.711 9228-9228/com.android.launcher3 D/HZH: onInterceptTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\views\BaseDragLayer.java
2021-02-02 11:10:48.712 9228-9228/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 1 MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=351.5118, y[0]=1391.1083, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1064871, downTime=1064840, deviceId=3, source=0x1002, displayId=0 }
2021-02-02 11:10:48.712 9228-9228/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 2 
2021-02-02 11:10:48.712 9228-9228/com.android.launcher3 D/b/133867119: onTouchEvent 1
2021-02-02 11:10:48.712 9228-9228/com.android.launcher3 D/b/132900132: AllAppsContainerView.dispatchTouchEvent MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=351.5118, y[0]=23.108276, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1064871, downTime=1064840, deviceId=3, source=0x1002, displayId=0 }
2021-02-02 11:10:48.712 9228-9228/com.android.launcher3 D/HZH: onTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\allapps\AllAppsContainerView.java
2021-02-02 11:10:48.728 9228-9228/com.android.launcher3 D/HZH: dispatchTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\LauncherRootView.java
2021-02-02 11:10:48.728 9228-9228/com.android.launcher3 D/b/132900132: BaseDragLayer.dispatchTouchEvent MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=351.5118, y[0]=1391.1083, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1064882, downTime=1064840, deviceId=3, source=0x1002, displayId=0 }
2021-02-02 11:10:48.728 9228-9228/com.android.launcher3 D/HZH: onInterceptTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\views\BaseDragLayer.java
2021-02-02 11:10:48.728 9228-9228/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 1 MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=351.5118, y[0]=1391.1083, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1064882, downTime=1064840, deviceId=3, source=0x1002, displayId=0 }
2021-02-02 11:10:48.728 9228-9228/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 2 
2021-02-02 11:10:48.728 9228-9228/com.android.launcher3 D/b/133867119: onTouchEvent 1
2021-02-02 11:10:48.729 9228-9228/com.android.launcher3 D/b/132900132: AllAppsContainerView.dispatchTouchEvent MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=351.5118, y[0]=23.108276, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1064882, downTime=1064840, deviceId=3, source=0x1002, displayId=0 }
2021-02-02 11:10:48.729 9228-9228/com.android.launcher3 D/HZH: onTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\allapps\AllAppsContainerView.java
2021-02-02 11:10:48.761 9228-9228/com.android.launcher3 D/HZH: dispatchTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\LauncherRootView.java
2021-02-02 11:10:48.761 9228-9228/com.android.launcher3 D/b/132900132: BaseDragLayer.dispatchTouchEvent MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=351.5118, y[0]=1391.1083, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1064921, downTime=1064840, deviceId=3, source=0x1002, displayId=0 }
2021-02-02 11:10:48.761 9228-9228/com.android.launcher3 D/HZH: onInterceptTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\views\BaseDragLayer.java
2021-02-02 11:10:48.761 9228-9228/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 1 MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=351.5118, y[0]=1391.1083, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1064921, downTime=1064840, deviceId=3, source=0x1002, displayId=0 }
2021-02-02 11:10:48.761 9228-9228/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 2 
2021-02-02 11:10:48.761 9228-9228/com.android.launcher3 D/b/133867119: onTouchEvent 1
2021-02-02 11:10:48.762 9228-9228/com.android.launcher3 D/b/132900132: AllAppsContainerView.dispatchTouchEvent MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=351.5118, y[0]=23.108276, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=1064921, downTime=1064840, deviceId=3, source=0x1002, displayId=0 }
2021-02-02 11:10:48.762 9228-9228/com.android.launcher3 D/HZH: onTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\allapps\AllAppsContainerView.java
2021-02-02 11:10:48.776 9228-9228/com.android.launcher3 D/HZH: dispatchTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\LauncherRootView.java
2021-02-02 11:10:48.776 9228-9228/com.android.launcher3 D/b/132900132: BaseDragLayer.dispatchTouchEvent MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=351.5118, y[0]=1391.1083, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1064924, downTime=1064840, deviceId=3, source=0x1002, displayId=0 }
2021-02-02 11:10:48.776 9228-9228/com.android.launcher3 D/HZH: onInterceptTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\views\BaseDragLayer.java
2021-02-02 11:10:48.776 9228-9228/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 1 MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=351.5118, y[0]=1391.1083, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1064924, downTime=1064840, deviceId=3, source=0x1002, displayId=0 }
2021-02-02 11:10:48.776 9228-9228/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 2 
2021-02-02 11:10:48.776 9228-9228/com.android.launcher3 D/b/133867119: onTouchEvent 1
2021-02-02 11:10:48.777 9228-9228/com.android.launcher3 D/b/132900132: AllAppsContainerView.dispatchTouchEvent MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=351.5118, y[0]=23.108276, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1064924, downTime=1064840, deviceId=3, source=0x1002, displayId=0 }
2021-02-02 11:10:48.777 9228-9228/com.android.launcher3 D/HZH: onTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\allapps\AllAppsContainerView.java
2021-02-02 11:10:48.778 9228-9228/com.android.launcher3 D/HZH: dispatchTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\LauncherRootView.java
2021-02-02 11:10:48.778 9228-9228/com.android.launcher3 D/b/132900132: BaseDragLayer.dispatchTouchEvent MotionEvent { action=ACTION_UP, actionButton=0, id[0]=0, x[0]=351.5118, y[0]=1391.1083, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1064941, downTime=1064840, deviceId=3, source=0x1002, displayId=0 }
2021-02-02 11:10:48.779 9228-9228/com.android.launcher3 D/HZH: onInterceptTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\views\BaseDragLayer.java
2021-02-02 11:10:48.779 9228-9228/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 1 MotionEvent { action=ACTION_UP, actionButton=0, id[0]=0, x[0]=351.5118, y[0]=1391.1083, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1064941, downTime=1064840, deviceId=3, source=0x1002, displayId=0 }
2021-02-02 11:10:48.779 9228-9228/com.android.launcher3 D/b/133867119: onControllerInterceptTouchEvent 2 
2021-02-02 11:10:48.779 9228-9228/com.android.launcher3 D/b/132900132: AllAppsContainerView.dispatchTouchEvent MotionEvent { action=ACTION_UP, actionButton=0, id[0]=0, x[0]=351.5118, y[0]=23.108276, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1064941, downTime=1064840, deviceId=3, source=0x1002, displayId=0 }
2021-02-02 11:10:48.779 9228-9228/com.android.launcher3 D/HZH: onTouchEvent: Y:\10\alps\packages\apps\Launcher3\src\com\android\launcher3\allapps\AllAppsContainerView.java

如上黄色标注的位置就是我最关的,因为这两是两个截然不同的状态

    4. 事件分发的层级关系

    正常的分发流程

Mr.Alright---安卓Q Launcher3 Hotseat图标偶现不可点击_第2张图片

 

   异常的分发流程

Mr.Alright---安卓Q Launcher3 Hotseat图标偶现不可点击_第3张图片

 

      5. 代码分析

Mr.Alright---安卓Q Launcher3 Hotseat图标偶现不可点击_第4张图片

看到代码,基本上断定就是,就是因为AllAppsContainerView消费了touch事件,才导致图标没机会去处理点击事件,就出现了客户反馈的无法点击的问题。那为什么会消费了呢?唯一的判断条件就是mTouchHandler != null,

什么时候才不为null呢?就是rv != null && rv.getScrollbar().isHitInParent(ev.getX(), ev.getY(), mFastScrollerOffset的时候,条件触发了之后,mTouchHandler就会被赋值,就不再为空,再次点击的时候依然不为空,所以

Return true了。

如果google把这个用完就恢复为null,那么就没这问题了,但是在google看来,这种情况根本不会发生,因为按照Google的默认设计allApp的位置和hotseat的位置是绝不会有重叠的地方的,因此,google

没有处理也没在情理之中。

有没有可能恢复呢?从代码中看,只要mTouchHandler为null就可以了。根据代码,我们尝试了一下,果然,进入allApp页面,任意点击一个apk之后,mTouchHandler就恢复成null,点击事件就可以正常分发了。

  1. 问题修复:原因知道了,解决有两种
  1. 调整布局,不让重叠
  2. 修改逻辑,重叠的时候让事件正常分发(代码中的三行新添加的代码

 

总结:

      直接原因: 布局重叠

      根本原因: 源码没有对mTouchHandler做异常情况的处理

      复现方法: 打开所有App页面,点击一个应用,按下home键的同时,快速的点击屏幕

      恢复方法: 打开所有App页面,任意点击一个应用,home退出   

      修改方法: 修改逻辑,重叠的时候让事件正常分发(代码中的三行新添加的代码)

你可能感兴趣的:(系统修改,launcher,hotseat,图标点击事件)