背景:
近期有学员朋友求助一个系统直接不显示Task相关的窗口问题,先来看看现象:
上面现象可以看到明显系统启动后桌面已经不显示了,那么就是针对这样一个桌面不显示问题作为学员作业布置给大家来进行探索。
问题复现:
首先要自己代码中加一个TaskOrganizer的继承类:
package com.android.systemui;
import android.content.Context;
import android.window.TaskOrganizer;
public class MyTaskOrganizer extends TaskOrganizer {
private Context mContext;
public MyTaskOrganizer(Context context) {
mContext = context;
registerTaskListener();
}
//注册task的监听
public void registerTaskListener() {
registerOrganizer();
}
}
这个MyTaskOrganizer主要就是在构造时候有调用registerTaskListener,这个最后会调用到TaskOrganizer自带的registerOrganizer方法中去。
接下来在使用这个MyTaskOrganizer既可以:
做完上面步骤后就已经完成了所有复现的动作,只需要重新编译系统,然后运行起来后就复现出如下桌面不显示问题:
其实从修改可以看出来,只是简单的构造了一个MyTaskOrganizer就会导致桌面Task无法显示,整个复现过程其实都属于程序员正常写代码行为,但是就是出现了个Task不显示问题。
所以我们任务就是要分析定位出这个Task不显示的根本原因。
作业要求:
1、使用相关代码修改复现该问题
2、使用马哥课程讲解的相关dumpsys命令尝试分析Task不显示的相关分析
3、定位到导致不显示问题的相关代码
4、定位到不显示的根本原因,及进行修复或者规避等
更多framework实战干货,请关注下面“千里马学框架”