PolicyManager类位于framework\base\core\java\com\android\internal\policy目录中的PolicyManager.java文件中。PolicyManager主要用于创建Window类、LayoutInflater类和WindowManagerPolicy类,它扮演着简单工厂模式中的工厂类角色,而抽象产品角色由IPolicy接口实现,具体产品角色由Policy类实现。那好的,接下来图解,注意看代码:
PolicyManager:看static代码块中 sPolicy 通过反射实例化了 "com.android.internal.policy.impl.Policy",最后调用Policy的makeNewWindow(),makeNewLayoutInflater(),makeNewWindowManager()....。写得比较粗糙,请谅解。
IPolicy接口:
IPolicy接口的实现类Policy:static代码块中 提前加载会用到的相关类
谢谢