Android自定义view生命周期

Android  2020年6月7日 pm12:26发布5年前 (2020)更新 91es.com站长
109 0 0

自定义布局或者自定义view都是一样的流程

周期如下

    #  进入
    onFinishInflate:

    onAttachedToWindow:

    onWindowVisibilityChanged:

    onVisibilityChanged:

    onMeasure:

    onLayout:

    onDraw:

    # 退出

    onWindowVisibilityChanged:

    onVisibilityChanged:

    onDetachedFromWindow:

package com.la.allwater.view;

import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

public class MyLinearLayout extends LinearLayout {

    private String TAG = "MyLinearLayout";

    public MyLinearLayout(Context context) {
        this(context, null);
    }

    public MyLinearLayout(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public MyLinearLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onFinishInflate() {
        super.onFinishInflate();
        Log.d(TAG, "onFinishInflate: ");
    }

    @Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();
        Log.d(TAG, "onAttachedToWindow: ");
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        Log.d(TAG, "onMeasure: ");
    }

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        super.onLayout(changed, l, t, r, b);
        Log.d(TAG, "onLayout: ");
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Log.d(TAG, "onDraw: ");
    }

    @Override
    protected void onWindowVisibilityChanged(int visibility) {
        super.onWindowVisibilityChanged(visibility);
        Log.d(TAG, "onWindowVisibilityChanged: ");
    }

    @Override
    protected void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        Log.d(TAG, "onConfigurationChanged: ");
    }

    @Override
    protected void onVisibilityChanged(@NonNull View changedView, int visibility) {
        super.onVisibilityChanged(changedView, visibility);
        Log.d(TAG, "onVisibilityChanged: ");
    }

    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        Log.d(TAG, "onDetachedFromWindow: ");
    }
}

 历史上的今天

  1. 2024: 丝绒陨:年轻人,请忍受一下(0条评论)
  2. 2021: 叶芝 : 当你老了(0条评论)
  3. 2019: WordPress页面中阻止插入额外换行(0条评论)
版权声明 1、 本站名称: 91易搜
2、 本站网址: 91es.com
3、 本站内容: 部分来源于网络,仅供学习和参考,若侵权请留言
3、 本站申明: 个人流水账日记,内容并不保证有效

暂无评论

暂无评论...

随机推荐

歌德:野蔷薇

少年看到一朵蔷薇,荒野的小蔷薇,那样的娇嫩可爱而鲜艳,急急忙忙走向前,看得非常欢喜。蔷薇,蔷薇,红蔷薇,荒野的小蔷薇。 少年说:“我要来采你,荒野的小蔷薇!”蔷薇说:“我要刺你,让你用不会忘记。我不愿被你采折。”蔷薇,蔷薇,红蔷薇,荒野的小蔷薇。 ...

[小知识]内存泄漏整理

什么是内存泄漏?总的来说:内存不在GC掌握之内。当一个对象已经不在使用了,本该回收时,而另外一个正在使用的对象持有它的引用而导致内存不能被回收。本该回收的对象没有被回收,而一直停留在堆内存中,这就产生了内存泄漏。Java的GC内存回收机制当对象不再有任何的引用时候才会进行回收。内存分配的...

Android修改默认音量

前言最近有涉及相关音量的修改,不是很理解,因此网站找了相关资料学习,记录一下方便自己查阅。正文本文内容在参考文《android车机修改默认最大音量与默认音量》上学习,然后修改自己的音量。android10/device/semidrive/common/audio/audio_policy...

MediaMetadataRetriever解析媒体文件元数据

前言记录一下,一般获取视频、音频等媒体文件的元数据信息是使用MediaMetadataRetriever这个类。正文直接上代码。MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();//设...

芒克:天空

太阳升起来天空血淋淋的犹如一块盾牌 日子像囚徒一样被放逐没有人来问我没有人宽恕我 我始终暴露着只是把耻辱用唾沫盖住 天空,天空把你的疾病从共和国的土地上扫除干净 可是,希望变成了泪水掉在地上我们怎么能确保明天的人们不悲伤...

Java反射机制及IoC原理

这篇讲解的不错,摘抄于此。感谢《Java反射机制及IoC原理》一. 反射机制概念主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。在java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息。反...