LifeCycle之ProcessLifeCycleOwner

2024-05-11 07:20

本文主要是介绍LifeCycle之ProcessLifeCycleOwner,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题:想要知道应用程序当前处在前台、后台、或从后台回到前台,想要知道应用的状态,

LifeCycle提供了ProcessLifeCycleOwner的类,方便我们知道整个应用程序的生命周期情况

ProcessLifeCycleOwner 使用方法

1.首先添加依赖

    implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"

ProcessLifeCycleOwner 其本质也是观察者模式,由于要观察整个应用,需要在Application中进行代码编写。

  1. 定义一个ApplicationObserver类,实现LifecycleObserver接口,用来监听应用生命周期
public class ApplicationObserver implements LifecycleObserver {private String TAG = "ApplicationObserver";/*** 在应用程序的整个生命周期中只会调用一次*/@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)public void onCreate() {Log.e(TAG, "onCreate()");}/*** 应用在前台出现时被调用*/@OnLifecycleEvent(Lifecycle.Event.ON_START)public void onStart() {Log.e(TAG, "onStart()");}/*** 应用在前台出现时被调用*/@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)public void onResume() {Log.e(TAG, "onResume()");}/*** 当应用程序退出到后台时被调用*/@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)public void onPause() {Log.e(TAG, "onPause()");}/*** 当应用程序退出到后台时被调用*/@OnLifecycleEvent(Lifecycle.Event.ON_STOP)public void onStop() {Log.e(TAG, "onStop()");}/*** 永远不会被调用,系统不会分发调用ON_DESTROY 事件*/@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)public void onDestroy() {Log.e(TAG, "onDestroy()");}}
  1. 在Application中使用ApplicationObserver
public class App extends Application {@Overridepublic void onCreate() {super.onCreate();//监听应用的生命周期情况ProcessLifecycleOwner.get().getLifecycle().addObserver(new ApplicationObserver());}
}

日志
在这里插入图片描述

使用起来非常简单,不会给项目增加任何耦合度,需要注意的是:

  • ProcessLifeCycleOwner 是针对整个应用程序的监听,与Activity数量无关。
  • Lifecycle.Event.ON_CREATE只会被调用一次,Lifecycle.Event.ON_DESTROY永远不会被调用。
  • 首次被打开或应用程序从后台到前台,会依次调用Lifecycle.Event.ON_START、Lifecycle.Event.ON_RESUME
  • 从前台到后台会依次调用Lifecycle.Event.ON_PAUSE、Lifecycle.Event.ON_STOP

LifecycleOwner是接口

public interface LifecycleOwner {/*** Returns the Lifecycle of the provider.** @return The lifecycle of the provider.*/@NonNullLifecycle getLifecycle();
}

LifecycleOwner 通过getLifecycle(LifecycleObserver observer)实现观察者模式的。

总结

所有具有生命周期的组件都能够使用LifeCycle。包括Activity、Service、Fragment、Applicaption。LifeCycle组件存在的主要意义就是帮我们解耦,让自定义组件也能够感受到生命周期的变化。不需要再担心内存泄漏等问题。

这篇关于LifeCycle之ProcessLifeCycleOwner的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/978870

相关文章

Android Jetpact Lifecycle 解析

认识 Lifecycle Lifecycle 是什么 Lifecycle 是 Jetpack 组件库中的一个生命周期感知型组件。在 Lifecycle 出现之前,需要手动从外部宿主(如 Activity、Fragment 或自定义宿主)中将生命周期事件分发到功能组件内部,这势必会造成宿主代码复杂度增加。有了 Lifecycle 的存在,搭建依赖于生命周期变化的业务逻辑变得简单高效,可以用一种统

Android JetPack Lifecycle源码解析

是什么? JetPack Lifecycle是一个页面(Activity/Fragment)生命周期的组件,当你想监听生命周期,那么就可以使用这个组件。 怎么用? 第一种: getLifecycle().addObserver(new LifecycleObserver() {@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)publi

EventBus搭配LifeCycle可能更美味

简要介绍 EventBus:一个用来在组件之间发通知通信的开源库。 LifeCycle:JetPack库中一个能感知生命周期的组件。 Kotlin扩展函数:可以为已经存在的类添加新的方法的黑魔法。 解决的问题 在使用EventBus时,我们每次在需要接受通知的地方,都需要注册和解绑监听函数。类似下面的模板代码: @Overrideprotected void onStart() {s

Spring中SmartLifecycle和Lifecycle的作用和区别

本文基于SpringBoot 2.5.0-M2讲解Spring中Lifecycle和SmartLifecycle的作用和区别,以及如何控制SmartLifecycle的优先级。 并讲解SpringBoot中如何通过SmartLifecycle来启动/停止web容器. SmartLifecycle & Lifecycle作用和区别 SmartLifecycle和Lifecycle作用 都是让开

Android从零开始搭建MVVM架构(5)—— LifeCycle详解

1.Lifecycle简介 为什么要使用lifecycle? activity 和fragment 是有声明周期的,有时候,我们的很多操作需要写在声明周期的方法中,比如,下载,文件操作等,这样很多情况下回导致,我们在activity中的声明周期方法中写越来越多的代码,activity或者fragment 越来越臃肿,代码维护越来越困难。 使用lifecycle就可以很好的解决这类问题。 lifec

Android Lifecycle详解(一)

官方文档翻译 使用生命周期感知组件处理生命周期Lifecycle EventStateLifecycleOwner实现一个自定义的LifecycleOwner 生命周期感知组件的最佳实践生命周期感知组件的使用场景停止事件处理附加资源 使用生命周期感知组件处理生命周期 生命周期感知组件响应于另一组件的生命周期状态(如Activity和Fragment)的变化而执行动作。这些组件有

Jetpack架构组件_LifeCycle组件

1.LifeCycle组件          LifeCycle组件可以让我们自定义的类能主动感知到Activity、Fragment、Application、Service等系统组件的生命周期。        我们以百度定位为例,我们一般在Activity生命周期的onCreate回调函数里调用自定义类LocationService的Start()方法,在onStop回调里调用Locatio

Spring 之 Lifecycle 及 SmartLifecycle

最近在看Eureka源码,本想快速解决这场没有硝烟的战役,不曾想阻塞性问题一个接一个。为正确理解这个框架,我不得不耐着性子,慢慢梳理这些让人困惑的点。譬如本章要梳理的Lifecycle和SmartLifecycle。它们均为接口,其中后者继承于前者,他们的类图如下所示: 关于Lifecycle,网络平台给出的解释是这样的:它是Spring框架中的一个基础接口,用于简化管理有状态的组件(譬如连

Android LifeCycle监控生命周期

LifeCycle的作用是感知组件(Activity/Fragment)的生命周期 , 并在合适的生命周期执行分配的任务. 1.监听组件生命后期 假设我们此时有一个Util类,其中有两个方法需要分别在Activity的onStart和onDestory的时候执行,我们可以先让它实现LifecycleObserver: class LifecycleUtil : LifecycleObserv

Lifecycle 源码解析(2.4.1 版本)

文章目录 1、Lifecycle 简介2、Lifecycle 配置与基本用法2.1 依赖引入与配置2.2 基本用法2.2.1 Lifecycle 简单使用2.2.2 普通 Activity 实现 Lifecycle2.2.3 ProcessLifecycleOwner 实现前后台切换 3、Lifecycle 源码解析3.1 Fragment 实现 Lifecycle3.2 Activity