问题的根本原因是monkey测试时,com.android.quicksearchbox 应用查找FileExplorer应用并启动FileExploreActivity,创建对应的 task root activity,后续在发生问题期间并未有该token的activity finish及task id 被remove行为;在这个期间monkey测试大量启动了uid 0的FileExploreActivity,由于两者的启动Intent不一样,AMS处理将会创建多个FileExploreActivity实例对象,均建立在roottask activity的task id上,因此,就出现了大量的FileExploreActivity窗口及WIN DEATH,导致filedescriptor打开过多或其他问题,引起应用crash或anr等行为。
分析log如下:
第一步: 确认发生anr时的dum win问题FileExplorerActivity ,有大量的dup win taskid 78 的FileExploreActivity
01-01 13:34:05.136 759 833 I WindowManager: Input event dispatching timed out sendingto Prompt.
01-01 13:34:05.136 759 833 I WindowManager: Dump Display#0 windows:
01-01 13:34:05.138 759 833 I WindowManager: Dump Win No.275 = Window{81a08a6 u0com.xx.fileexplorer/com.xx.fileexplorer.activities.File