各位看官们,大家好,上一回中咱们说的是Android中View
原理概述的例子,这一回咱们说的例子是View中的助手。闲话休提,言归正转。让我们一起Talk Android吧!
看官们,我们在前面章回中说过,View
上承载了很多东西,于是需要一些助手帮忙,本章回中介绍的就是它的助手PhoneWindow
。另外,在这里说明一下,PhoneWidonw
是Activity
的一部分,在这里我们把Activity
看作是一种广义上的View
,因此把PhoneWindow
说成是View
的助手。好了,我们开始正式介绍PhoneWindow
。
它是一种Window
,在源代码中Window
是一个抽象类,而PhoneWindow
实现了该类,因此可以把它当作Window
对象来处理。在代码中它用来和WindowManager
进行沟通,而且WindowManager
就是通过PhoneWindow
来管理Activity
的。明白了它的含义后,我们看看它是如何和Activity
关联起来的。
要说PhoneWindow
和Activity
如何关联,那么还得从Activity
的创建说起,也就是Activity
的onCreate
()函数,它调用了Activity的setContentView
()函数,PhoneWindow就是在这个函数中创建的,我们可以看看具体的源代码:(代码文件:frameworks/base/core/java/android/app/Activity.java
)
public void setContentView(@LayoutRes int layoutResID) {
getWindow().setContentView(layoutResID);
initWindowDecorActionBar();
}
这里的getWindow
返回的就是PhoneWinodw类型的对象,源代码如下:
public Window getWindow() {
return mWindow;
}
而mWidow就是PhoneWinodw
类型的变量,它是在Activity
类的attach
方法中进行初始化的,代码如下:
final void attach(Context context, ActivityThread aThread,
Instrumentation instr, IBinder token, int ident,
Application application, Intent intent, ActivityInfo info,
CharSequence title, Activity parent, String id,
NonConfigurationInstances lastNonConfigurationInstances,
Configuration config, String referrer, IVoiceInteractor voiceInteractor,
Window window, ActivityConfigCallback activityConfigCallback) {
attachBaseContext(context);
mFragments.attachHost(null /*parent*/);
mWindow = new PhoneWindow(this, window, activityConfigCallback);
//其它代码省略,详细可以参考Activity.java中的源代码
}
各位看官,关于Androd中View助手的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!