`
xixinfei
  • 浏览: 414046 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android- View工作原理(二)导致View重建原因

 
阅读更多

导致View重建的原因有三个:

1、视图本身内部状态变化引起重绘;

2、view树内部添加或者删除子view

3、View本身的大小及可见性发生变化。

 

	这三种情况最后都直接或者间接的调用到了三个方法,invalidate()、requestLayout()
和requestFocus(),而这三个函数最终都会调用到ViewRoot中的schueduleTraversals()方法,
该方法发起一个异步消息,消息处理中调用performTraversals()开始对整个View进行重新遍历。
能导致调用invalidate()方法的包含三种情况:当应用程序改变视图显示属性时,
调用setVisibility();当改变视图Selected状态时,调用setSelected();
当改变视图Enable状态时,调用setEnable()。
	导致调用requestLayout()方法的情况包括两种:当应用程序改变视图显示属性时,
调用setVisibility(),由于显示或者不显示将影响其他兄弟视图的位置,
因此会调用到requestLayout();第二种是应用程序直接或者间接调用该函数,
间接调用是指应用程序调用了View类的其他函数,从而间接调用到requestLayout()。
	requestFocus()一般由程序直接调用,间接调用是指当用户按“上/下”、“左/右”键时,
相关的处理逻辑会间接的调用该方法
分享到:
评论

相关推荐

    Android-skin-sprite另一种不重启Activity切换Android夜间模式的库

    传统的实现夜间模式通常需要重启Activity,这可能导致界面闪烁,影响用户体验。而“Android-skin-sprite”库提供了一种无需重启Activity就能实现夜间模式切换的解决方案。这个库主要用于动态改变Android应用的主题和...

    android-android-ui-design-patterns.zip_android

    ViewModel负责处理数据和业务逻辑,与生命周期绑定,即使设备旋转等导致Activity重建,ViewModel的状态也能保持。 5. **响应式布局(Responsive Layouts)**:Android提供了多种布局管理器如LinearLayout, ...

    Android-Reminder辅助自定义View实现状态恢复

    当系统因内存不足或用户旋转设备而需要销毁并重建Activity时,Android会调用View的`onSaveInstanceState()`方法来保存当前的状态,这些状态通常包括View的可见性、文本内容、选中状态等。然后,在Activity或Fragment...

    Activity-View.rar_android

    在Android开发中,View是构建用户界面的基本元素,它的刷新机制是开发者必须理解的重要概念。本文将深入探讨Android中View的刷新方法,并提供相应的用法总结。 首先,我们需要理解Android View的绘制流程,这通常...

    Android-MVVM-Architecture,示例mvvm项目使用instagram api.zip

    MVVM(Model-View-ViewModel)架构是一种现代的软件设计模式,尤其在Android开发中被广泛采用。这个模式强调将应用的逻辑、用户界面和数据模型分离,以提高代码的可测试性、可维护性和可复用性。在“Android-MVVM-...

    MVVMDemo--view和model之间的互相更改.rar

    ViewModel的生命周期比Activity和Fragment更长,即使屏幕旋转等导致重建,ViewModel中的数据也不会丢失。 3. **View层**:View主要包括Activity、Fragment和UI组件,如TextView、EditText等。在MVVM中,View仅负责...

    Android-使用Androidarchitecturecomponents的示例应用程序

    整个应用的代码结构将遵循MVVM(Model-View-ViewModel)设计模式,这是Android Architecture Components推荐的一种最佳实践。此外,Kotlin的特性如协程和Anko库的使用,将进一步展示Kotlin在Android开发中的优势。

    Android-LikeELMLeftLoad仿饿了么左滑跳转

    【Android-LikeELMLeftLoad仿饿了么左滑跳转】是一个针对Android开发者设计的开源项目,旨在实现类似饿了么应用中的左滑跳转功能。这一特性在许多移动应用中常见,它允许用户通过在主界面左滑来访问其他功能或者返回...

    Android-mvvvm组件化的sample

    在Android应用开发中,MVVM(Model-View-ViewModel)架构模式已经成为现代应用程序设计的主流选择,尤其是在大型项目和组件化开发中。本示例"Android-mvvvm组件化的sample"旨在展示如何在Android环境中有效地利用...

    Android-Kotlin开发的饭否客户端

    **Android-Kotlin开发的饭否客户端** 在移动应用开发领域,Android平台因其开源性和灵活性而备受开发者喜爱。近年来,随着Kotlin语言的兴起,它逐渐成为Android开发的首选语言,替代了传统的Java。本项目“Android-...

    Android-猎豹"快切App"中用到的Android开发技巧探索[附源码]

    此外,`LiveData`和`ViewModel`(来自Android架构组件)可以辅助开发者实现数据的生命周期管理,保证组件重建时数据的持久性。 接着,UI设计和自定义视图也是关键部分。Android Studio提供的XML布局工具使得开发者...

    android拖动控件,解决回到原点

    "android拖动控件,解决回到原点"这个标题揭示了一个常见问题:当用户拖动一个视图(View)后,由于父布局的刷新或其他原因,如ListView的滚动,拖动的视图可能会意外地返回到初始位置。这个问题的核心在于理解...

    android 菜单栏 仿微信 自定义View初阶学习

    在Android开发中,自定义View是一项重要的技能,它允许开发者创造出独特且富有个性化的用户界面。本教程将聚焦于如何创建一个类似微信的菜单栏,这涉及到对Android系统的理解、布局设计以及自定义View的使用。以下是...

    Android-StatedFragment-保存Fragment的状态

    在Android系统中,当Activity因配置更改(如屏幕旋转)而销毁并重建时,所有关联的Fragment也会被销毁。默认情况下,Fragment并不会自动保存其内部状态,因此需要开发者手动调用`onSaveInstanceState(Bundle ...

    一个Android -Fragment实例

    在Android应用开发中,Fragment是Android SDK中的一个重要组件,它被设计用来支持多屏幕适配和复杂的用户界面设计。在大型应用中,尤其是在平板电脑和电视等大屏幕设备上,Fragment使得开发者能够将一个Activity拆分...

    Android-一个示例程序演示如何在遵循CleanArchitecture概念的Android应用中使用Jetpack架构组件

    **Android 开发与 Clean Architecture 结合使用 Jetpack 架构组件** 在Android应用程序开发中,遵循良好的架构模式是至关重要的,这有助于保持代码的可维护性、可测试性和可扩展性。Clean Architecture是一种广泛...

    Android实现model变动自动化改变view之demo

    在Android开发中,Model-View-ViewModel (MVVM)架构是一种流行的设计模式,它强调了数据和视图之间的解耦,使得代码更加清晰和可维护。在这个“Android实现model变动自动化改变view之demo”中,我们将探讨如何在模型...

    Android ViewPager-实现左右两个屏幕的切换-IT计算机-毕业设计.zip

    这个毕业设计案例为学习者提供了一个实际操作的平台,有助于深入理解ViewPager的工作原理和使用方法,对于提升Android开发技能具有积极意义。通过分析和实践此项目,学生可以了解到Android应用中页面切换的实现方式...

    Android-Architecture-Components-Kotlin:用于练习Kotlin和Android体系结构组件的示例

    此外,项目的结构遵循了MVVM(Model-View-ViewModel)设计模式,这是一种现代的Android开发架构,强调了分离关注点和解耦组件。MVVM模式下,Model负责数据处理,ViewModel负责与UI交互,而View则负责显示数据和接收...

    Android代码-使用Kotlin实现的一个简单的记事本App

    - **ViewModel**:充当Model和View之间的桥梁,它保存UI状态并在Activity重建时存活,如设备旋转。 7. **LiveData和Observer**:这是Android架构组件的一部分,用于实现数据绑定和观察者模式。LiveData是生命周期...

Global site tag (gtag.js) - Google Analytics