Android官方架构组件:Lifecycle详解&迪士尼彩乐园网站架设原理分析

我们先将重要的这些类挑选出来:

LifecycleObserver接口( Lifecycle观察者):实现该接口的类,通过注解的方式,可以通过被LifecycleOwner类的addObserver(LifecycleObserver o)方法注册,被注册后,LifecycleObserver便可以观察到LifecycleOwner的生命周期事件。

LifecycleOwner接口(Lifecycle持有者):实现该接口的类持有生命周期(Lifecycle对象),该接口的生命周期(Lifecycle对象)的改变会被其注册的观察者LifecycleObserver观察到并触发其对应的事件。

Lifecycle(生命周期):和LifecycleOwner不同的是,LifecycleOwner本身持有Lifecycle对象,LifecycleOwner通过其Lifecycle getLifecycle()的接口获取内部Lifecycle对象。

State(当前生命周期所处状态):如图所示。

Event(当前生命周期改变对应的事件):如图所示,当Lifecycle发生改变,如进入onCreate,会自动发出ON_CREATE事件。
Android官方架构组件:Lifecycle详解&原理分析
迪士尼彩乐园网站架设,需要请搜索【大神源码论坛】dsluntan.com 客服企娥3393756370 V信17061863513,
了解了这些类和接口的职责,接下来原理分析就简单很多了,我们以Fragment为例,来看下实际Fragment等类和上述类或接口的联系:

1、Fragment:LifecycleOwner
Fragment(Activity同理,我们 本文以Fragment为例,下同):实现了LifecycleOwner接口,这意味着Fragment对象持有生命周期对象(Lifecycle),并可以通过Lifecycle getLifecycle()方法获取内部的Lifecycle对象:
public class Fragment implements xxx, LifecycleOwner {

//...省略其他

LifecycleRegistry mLifecycleRegistry = new LifecycleRegistry(this);

@Override
public Lifecycle getLifecycle() {
    return mLifecycleRegistry;
}

}

public interface LifecycleOwner {br/>@NonNull
Lifecycle getLifecycle();
}
可以看到,实现的getLifecycle()方法,实际上返回的是 LifecycleRegistry 对象,LifecycleRegistry对象实际上继承了 Lifecycle,这个下文再讲。

持有Lifecycle有什么作用呢?实际上在Fragment对应的生命周期内,都会发送对应的生命周期事件给内部的 LifecycleRegistry对象处理:

public class Fragment implements xxx, LifecycleOwner {
//...
void performCreate(Bundle savedInstanceState) {
onCreate(savedInstanceState); //1.先执行生命周期方法
//...省略代码
//2.生命周期事件分发
mLifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_CREATE);
}

void performStart() {
    onStart();
    //...
    mLifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_START);
}

void performResume() {
     onResume();
    //...
    mLifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_RESUME);
}

void performPause() {
    //3.注意,调用顺序变了
    mLifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_PAUSE);
    //...
    onPause();
}

void performStop() {
   mLifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_STOP);
    //...
    onStop();
}

void performDestroy() {
    mLifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_DESTROY);
    //...
    onDestroy();
}

}

随着Fragment不同走到不同的生命周期,除了暴露给我们的生命周期方法onCreate/onStart/…./onDestroy等,同时,Fragment内部的Lifecycle对象(就是mLifecycleRegistry)还将生命周期对应的事件作为参数传给了 handleLifecycleEvent() 方法。

Android官方架构组件:Lifecycle详解&迪士尼彩乐园网站架设原理分析

原文地址:http://blog.51cto.com/13968102/2174636

时间: 2024-10-06 08:46:50

Android官方架构组件:Lifecycle详解&迪士尼彩乐园网站架设原理分析的相关文章

Android官方架构组件:Lifecycle详解&迪士尼彩乐园平台搭建原理分析

在过去的谷歌IO大会上,Google官方向我们推出了 Android Architecture Components,其中谈到Android组件处理生命周期的问题,向我们介绍了 Handling Lifecycles. 同时,如何利用 android.arch.lifecycle 包提供的类来控制数据.监听器等的 lifecycle.同时,LiveData 与 ViewModel 的 lifecycle 也依赖于 Lifecycle 框架. 经过公司内部的技术交流小组的探讨后,不少小伙伴觉得这个

Android官方架构组件:Lifecycle详解&迪士尼彩乐园定制开发原理分析

Lifecycle 是一个类,它持有关于组件(如 Activity 或 Fragment)生命周期状态的信息,并且允许其他对象观察此状态. 我们只需要2步: 1.Prestener继承LifecycleObserver接口public interface IPresenter extends LifecycleObserver { @OnLifecycleEvent(Lifecycle.Event.ON_CREATE) void onCreate(@NotNull LifecycleOwner

【迪士尼彩乐园】全套源码分享下载带急速赛车,后台带AB盘完美无错

[迪士尼彩乐园]全套源码分享下载带急速赛车,后台带AB盘完美无错 运行环境:php5.2+mysql 下载地址:http://fanshubbs.com/thread-245-1-1.html 源码类别:时时彩(彩票)现金网系统/两面盘 界面语言:简体中文 源码授权:无加密文件及认证授权,永久性可直接使用. 版本支持:PC/WAP网页版 编程语言:PHP 手机版独家对接的,完整无错! 此源码经过测试人员实测截图,保证100%和截图一致!!! 原文地址:https://www.cnblogs.co

【迪士尼彩乐园】全套源码分享下载带三个急速,后台带AB盘完美无错

[迪士尼彩乐园]全套源码分享下载带三个急速,后台带AB盘完美无错联系Q:2947702644 源码类别:时时系统/两面盘界面语言:简体中文源码授权:无加密文件及认证授权,永久性可直接使用.版本支持:PC/WAP网页版编程语言:PHP ThinkPHP是一个快速.简单的基于MVC和面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,尤其注重开发体验和易用性,并且拥有众多的原创功能和特性,为WEB应用开发提供了强有

js的arguments迪士尼彩乐园菠菜网站源码开发到底是什么?

arguments的一些妙用1.利用arguments实现方法的重载 下面我们利用arguments对象来实现一个参数相加的函数,不论传入多少参数都行,将传入的参数相加后返回. function add() {var len = arguments.length,sum = 0;for(;len--;){sum += arguments[len];}return sum;} console.log( add(1,2,3) ); //6console.log( add(1,3) ); //4con

Android开发四大组件--Activity详解

Android开发四大组件--Activity详解 - Android开发教程 Android开发的四大组件在开发中应用中是必不可少的,下面就来详解下四大组件之一Activity,总结自网络.Activty的生命周期的也就是它所在进程的生命周期. 一个Activity的启动顺序: onCreate()——>onStart()——>onResume() 当另一个Activity启动时: 第一个Activity onPause()——>第二个Activity onCreate()——>

Android四大基本组件-Service详解

一.官方文档 Class Overview A Service is an application component representing either an application's desire to perform a longer-running operation while not interacting with the user or to supply functionality for other applications to use. Each service c

Android官方架构组件介绍之ViewModel(三)

ViewModel 像Activity,Fragment这类应用组件都有自己的生命周期并且是被Android的Framework所管理的.Framework可能会根据用户的一些操作和设备的状态对Activity或者Fragment进行销毁和重构.作为开发者,这些行为我们是无法干预的. 所以Activity或Fragment中的一些数据也会随着销毁而丢失,随着重构而重新生成.比如你的Activity中有个用户列表,当这个Activity重构的时候,新的Activity会重新获取用户列表.对于一些简

android官方侧滑菜单DrawerLayout详解

drawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产物.drawerLayout分为侧边菜单和主内容区两部分,侧边菜单可以根据手势展开与隐藏(drawerLayout自身特性),主内容区的内容可以随着菜单的点击而变化(这需要使用者自己实现). drawerLayout的使用很方便,使用drawerLayout的要点如下: 1.drawerLayout其实是