android View/ViewGroup 的生命周期总结笔记

在写自定义控件的时候,如果不知道整个view的执行过程,那蒙圈是必须的。这篇文章只是个笔记,如果看不懂,欢迎喷水!!

1.首先,Activity onCreate并初始化view

2.然后,Activity onResume后调用view的onAttachedToWindow,因此常常在onAttachedToWindow方法中做初始化工作,比如注册一些广播、开始动画等等……

3.接下来,如果设置了背景则调用onDraw,之后倘若是viewgroup则调用dispatchDraw。

说明:dispatchDraw()主要是分发给子组件进行绘制,我们通常定制组件的时候重写的是onDraw()方法。值得注意的是ViewGroup容器组件的绘制,当它没有背景时直接调用的是dispatchDraw()方法, 而绕过了draw()方法,当它有背景的时候就调用draw()方法,而draw()方法里包含了dispatchDraw()方法的调用。因此要在ViewGroup上绘制东西的时候往往重写的是dispatchDraw()方法而不是onDraw()方法,或者自定制一个Drawable,重写它的draw(Canvas c)和 getIntrinsicWidth(),getIntrinsicHeight()方法,然后设为背景。

4.最后,当点击回退键时,Activity onDestroy后才调用onDetachedFromWindow,这时我们就在这个方法做一些收尾工作,如:取消广播注册、停止动画等等。

说明:onDraw与dispatchDraw将可能由于setVisible或onresume调用多次,而onAttachedToWindow与onDetachedFromWindow在创建与销毁view的过程中只会调用一次。

5.此外在创建期间还会多次调用onMeasure和onLayout。

viewgroup无背景时,viewgroup仅调用了dispatchDraw,不调用onDraw。

版权声明:本文为博主原创文章,转载请注明来自:http://blog.csdn.net/kimyo8337373/article/category/2608037

时间: 2024-10-01 21:21:38

android View/ViewGroup 的生命周期总结笔记的相关文章

android View/ViewGroup的生命周期-自定义view

从构造方法开始,依次执行 onAttachToWindow——>onMeasure——>onSizeChanged——>onLayout——> onMeasure——>onLayout——>onDraw——>onDetachedFromWindow 如题View与ViewGroup里的方法调用过程总结如下: 1.首先,Activity onCreate并初始化view 2.然后,Activity onResume后调用view的onAttachedToWindow

android——View/ViewGroup的"生命周期"

如题View与ViewGroup里的方法调用过程总结如下: 1.首先,Activity onCreate并初始化view 2.然后,Activity onResume后调用view的onAttachedToWindow,因此常常在onAttachedToWindow方法中做初始化工作,比如注册一些广播.开始动画等等-- 3.接下来,如果设置了背景则调用onDraw,之后倘若是viewgroup则调用dispatchDraw. 说明:dispatchDraw()主要是分发给子组件进行绘制,我们通常

Android自定义View探索(一)—生命周期

Activity代码: public class FiveActivity extends AppCompatActivity { private MyView myView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.e("log", "Activity生命周期:onCreate"); setConte

Android Activity组件及其生命周期

Activity是什么? Activity 是用户接口程序,几乎所有的 Activity 都要和用户打交道. 每个 Activity 都提供一个用户界面窗口,一般情况下,该界面窗口会填满整个屏幕,但是也可以比屏幕小,或者浮在其他的窗口之上. Activity的四种状态,运行状态,暂停状态,停止状态,销毁状态. Activity的生命周期 名称 调用时间 onCreate(Bundle savedInstanceState) 创建 Activity 时调用. 设置在该方法中,还以 Bundle 的

Android 测试Service的生命周期

1 package com.example.myapp4; 2 3 import android.support.v7.app.ActionBarActivity; 4 import android.content.Intent; 5 import android.os.Bundle; 6 import android.view.Menu; 7 import android.view.MenuItem; 8 import android.view.View; 9 import android.w

【Android开发-8】生命周期,Activity中打开另外一个Activity

前言:生命中有许多人陪伴自己走过一生中的某段旅程,只是有些人只是某阶段出现,有些人却陪伴自己很久.就像小学.中学.高中.大学,那些曾经以为会长久拥有的,当经历过天涯各地地忙碌于生活,或如意,或失意:渐渐地那些画面只剩回忆.天涯各自安命,能在一起的就尽力珍惜吧,不在一起地就衷心地祝福,我们都需要一种姿态生活下去!Android中的Activity的生命中,我们经常需要打开另外一个Activity,即另外一个界面.这个可能出现的时间很短暂,然后又回到主界面.但是这两个Activity都在各自的生命周

[Android]管理Activity的生命周期

一.简要介绍 当用户开始,暂停,退出,重新进入一个APP的时候,APP中Activity实例在它生命周期的不同状态之间转换.比如当你第一次启动一个Activity时,Activity来到系统的前端获得用户焦点.在这个过程中,Android系统调用了一系列生命周期方法.如果用户启动或者切换到另一个APP,系统调用另外一系列的方法. 生命周期调用方法可以说明在用户离开或者重新进入Activity时,Activity执行哪些行为. 接下来我们将解释每一个Activity都有的生命周期方法,并且说明如何

Android中activity的生命周期以及使用场景

#1完整生命周期代码如下. package com.wzw.lifecycle; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; public class MainActivity extends Activity { //被创建的时候调用的方法 @Override protected void onCreate(Bund

解决 android.view.ViewGroup$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams

错误日志1: 06-13 10:55:50.410: E/KVLog(1129): Error info:java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams06-13 10:55:50.423: E/KVLog(1129): Cause Result:java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams06-13 10: