对android布局和窗口的理解

context:

Context实例个数 = Service个数 + Activity个数 + 1(Application对应的Context实例)

1、它描述的是一个应用程序环境的信息,即上下文。

2、该类是一个抽象(abstract class)类。



对android布局和窗口的理解_第1张图片


Application:


创建Application 对象时, 而且整个App共一个Application对象

getApplicationContext()返回的是你的整个Application的context,生命周期是整个Application,Application销毁后,它才销毁。

getBaseContext()返回由构造函数指定或者setBaseContext()设置的上下文(谷歌工程师不建议使用)。


所以application的生命周期就是整个程序的生命周期,程序完全退出application才销毁。


activity与View

window,activity,和view的关系是这个样子的:

activity中new出一个window,而window(接口)通过这个phonewindow子类来获取一个子类实例。这是一种典型composite模式。再通过

phonewindow的setContentView在内部使用LayoutInflater来给Window设置View。


这段话给我们的感觉就是 activity是窗口(界面),View是显示在窗口的布局


this和activity.this


Activity.this的context属于Activity,生命周期与Activity相同,随着当前的Activity.this消亡而消亡。

this是你当前对象的引用,this放在哪里边就是谁的指针,如果在Activity中就是Activity,这时等同于Activity.this;如果放在OnCliclListener()中就是OnClickListener()。


activity.this的生命周期就是当前的页面,当前页面销毁掉了,activity也就被销毁,另外this指当前对象,在实际开发工程中有的需要自己指明是哪个activity的对象,要不然编译不通过。


看下他们之间的结构图

对android布局和窗口的理解_第2张图片


对android布局和窗口的理解_第3张图片


对android布局和窗口的理解_第4张图片


从这几个图可以看出 context是一个大的窗口(界面),这个界面的下一级别是 application 再下一级别是 activity....    ,cointext是这几个类的父类

对android布局和窗口的理解_第5张图片

同样的布局View是所有layout布局中控件的父类。  context和View一个管理窗口一个管理布局显示。

你可能感兴趣的:(对android布局和窗口的理解)