java - Android源码,Java trace,抽象类

标签 java android abstract-class android-source android-fragmentactivity

我想知道 Activity.java 到底是什么的 setContentView() 方法正在调用/执行。

Here是 Android 源代码和第 1646 行的代码 stub :

public void setContentView(int layoutResID) {
    getWindow().setContentView(layoutResID);
}

这是我的踪迹...

在第 642 行,我们知道它的类型是 android.view.Window

private Window mWindow;

但是Window.java是一个抽象类。在第 738 行,该方法也是抽象的:

public abstract void setContentView(int layoutResID);

实际的函数体在哪里实现?

返回Activity.java文件,在第 3746 行,我们找到了 mWindow 的一些初始化:

mWindow = PolicyManager.makeNewWindow(this);
mWindow.setCallback(this);
...

嗯,关于com.android.internal.policy.PolicyManagermakeNewWindow():

public static Window makeNewWindow(Context context) {
    return sPolicy.makeNewWindow(context);
}

private static final IPolicy sPolicy;
Class policyClass = Class.forName(POLICY_IMPL_CLASS_NAME);
sPolicy = (IPolicy)policyClass.newInstance();

IPolicy.java是一个接口(interface),这意味着根本没有实现。

我的踪迹无法再进一步。你能帮帮我吗?

特别是,我知道 Activity.setContentView() 最终会调用 android.support.v4.app.Fragment.javaFragment.onInflate() - 第 920 行,Fragment.onAttach() - 第 928 行,Fragment.onCreate() - 第 953 行, Fragment.onCreateView() - 第 967 行和 Fragment.onViewCreated() - 第 991 行。

最佳答案

你可以在这里找到这个资源

政策实现:source

窗口实现:source

关于java - Android源码,Java trace,抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16777735/

相关文章:

php - 在 PHP 中扩展抽象类时出现 fatal error

java - 使用 Spring 重写 Context.xml 文件中的选项

java - AOP 检测 Hibernate.unproxy() 的所有类转换

java - 当编辑文本位于软键盘后面时调整 Android 对话框上的平移

java - BitmapFactory.decodeByteArray() 返回 NULL

android - 使用编辑文本更改密码

java - Maven 存储库是否像其他依赖项一样支持 uber jar?

java - opennlp 上的嵌套标签

java - 抽象类可以有构造函数吗?

c++ - 来自抽象类的新派生类