关于android activity的层级理解
来源:互联网 发布:mysql常用的数据类型 编辑:程序博客网 时间:2024/06/17 05:08
关于android activity的层级理解
学习acitivty绘制的时候看到了activity的层级结构,也学习了一下也算是稍微了解了activity的层级结构,通过博客和源码记录一下自己的学习
先放一张网上找到的图,大致了解一下activity的层级关系和系统进程的关系,也感谢绘制图片的dalao
从上面图片可以看出activity的层级可以看出整个activty的层级其实分为->phoneWindow->DecorView(包含TitleView [例如actionbar,StatusBar等] 和contentView [我们自己编写的界面] )
通常我们编写的界面代码在setContentView中,从Activity的源码可以看出,activity将其交给了window来完成,window是activity的一个成员变量,仅有一个实现类PhoneWindow,PhoneWindow
public void setContentView(@LayoutRes int layoutResID) { getWindow().setContentView(layoutResID); //调用getWindow方法,返回mWindow initWindowDecorActionBar();}
- 来到PhoneWindow中,setContentView代码如下
@Overridepublic void setContentView(int layoutResID) { // Note: FEATURE_CONTENT_TRANSITIONS may be set in the process of installing the window // decor, when theme attributes and the like are crystalized. Do not check the feature // before this happens. if (mContentParent == null) { installDecor(); } else if (!hasFeature(FEATURE_CONTENT_TRANSITIONS)) { mContentParent.removeAllViews(); } if (hasFeature(FEATURE_CONTENT_TRANSITIONS)) { final Scene newScene = Scene.getSceneForLayout(mContentParent, layoutResID, getContext()); transitionTo(newScene); } else { mLayoutInflater.inflate(layoutResID, mContentParent); } final Callback cb = getCallback(); if (cb != null && !isDestroyed()) { cb.onContentChanged(); }}
- 首先会对mContentParent进行判定,如果为空则进行installDecor()操作,这个操作其实是进行mDecor的初始化,即DecorView,源码如下
private void installDecor() { if (mDecor == null) { mDecor = generateDecor(); ... } if (mContentParent == null) { mContentParent = generateLayout(mDecor); ... } }}
DecorView中存在着界面布局信息,从这里可以看出他是mContentParent的父类,也是存在于PhoneWindow中的一个成员变量。如果在viewTree中来看,DecorView是其根节点,viewRoot负责管理viewTree。从上面图也可以看出,ViewRoot这个类在android的UI结构中扮演的是一个中间者的角色,连接的是PhoneWindow跟WindowManagerService,每创建一个phoneWindow,便会创建一个相应的viewRoot进行链接。
阅读全文
0 0
- 关于android activity的层级理解
- Android的Activity视图层级分析
- android 中关于 activity 的一些理解
- Android中关于Activity/ActionBarActivity/AppCompatActivity的区分与理解
- Android中关于Activity/ActionBarActivity/AppCompatActivity的区分与理解
- 关于Activity周期的理解
- 关于Activity生命周期的理解
- 关于Activity的生命周期理解
- Android Activity生命周期的理解
- Android-Activity生命周期的理解
- 关于orcale的层级查询
- 关于activity的启动模式的理解
- 关于Activity Launch mode 的理解
- 关于Activity启动模式的理解
- 关于Activity启动模式的理解
- android View的层级结构
- android关于activity的组成
- 关于对Android Activity 生命周期的7个方法的理解
- iOS编程学习十三
- POJ
- money 小写转换大写
- js实现数组转换成json
- 获取系统时间
- 关于android activity的层级理解
- Kafka常用工具
- json数组去重
- 递归
- 递归2
- 分页
- $.ajax中的eval及dataType
- table的奇妙之处
- jQuery之upload2