Jetpack架构组件(二)Lifecycle使用

1.直接添加如下依赖就可以满足日常的工作,如果缺少哪个库,再去单独添加就好了

implementation "android.arch.lifecycle:extensions:1.1.1"

添加这一句代码就依赖了如下的库。

2.先不谈Activity和Fragment中如何使用,先举一个Lifecycle的简单例子。

 1 ackage com.example.lifecycledemo1;
 2
 3 import android.arch.lifecycle.Lifecycle;
 4 import android.arch.lifecycle.LifecycleObserver;
 5 import android.arch.lifecycle.OnLifecycleEvent;
 6 import android.support.v7.app.AppCompatActivity;
 7 import android.os.Bundle;
 8 import android.util.Log;
 9
10 public class MainActivity extends AppCompatActivity {
11
12     private static final String TAG = "MainActivity";
13
14     @Override
15     protected void onCreate(Bundle savedInstanceState) {
16         super.onCreate(savedInstanceState);
17         setContentView(R.layout.activity_main);
18         getLifecycle().addObserver(new MyObserver());//1
19     }
20
21     public class MyObserver implements LifecycleObserver{
22
23         @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
24         void onResume(){
25             Log.d(TAG, "Lifecycle call onResume");
26         }
27         @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
28         void onPause(){
29             Log.d(TAG, "Lifecycle call onPause");
30         }
31     }
32
33     @Override
34     protected void onResume() {
35         super.onResume();
36         Log.d(TAG, "onResume");
37     }
38
39     @Override
40     protected void onPause() {
41         super.onPause();
42         Log.d(TAG, "onPause");
43
44     }
45 }

先实现MyObserver,对ON_CREATE和ON_RESUME事件进行监听。因为在Android Support Library 26.1.0 及其之后的版本,Activity和Fragment已经默认实现了LifecycleOwner接口,所以在注释1处可以直接使用getLifecycle方法获取Lifecycle对象,这样MyObserver就可以观察MainActivity的生命周期变化了,LifecycleOwner可以理解为被观察者,MainActivity默认实现了LifecycleOwner接口,也就是说MainActivity是被观察者。
运行程序,打印的log如下所示。

D/MainActivity: onResume
D/MainActivity: Lifecycle call onResume
D/MainActivity: Lifecycle call onPause
D/MainActivity: onPause

3.MVP的例子

 1 public class MyPresenter implements IPresenter {
 2     private static final String TAG = "test";
 3
 4     @Override
 5     public void onResume() {
 6         Log.d(TAG, "Lifecycle call onResume");
 7     }
 8
 9     @Override
10     public void onPause() {
11         Log.d(TAG, "Lifecycle call onPause");
12     }
13 }
14
15 interface IPresenter extends LifecycleObserver {
16
17     @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
18     void onResume();
19
20     @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
21     void onPause();
22 }

IPresenter接口继承自LifecycleObserver接口,MyPresenter又实现了IPresenter接口,这样MyPresenter成为了一个观察者。
接在在MainActivity中加入MyPresenter:

 1 public class MainActivity extends AppCompatActivity {
 2
 3     private static final String TAG = "test";
 4     private IPresenter mPresenter;
 5     @Override
 6     protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.activity_main);
 9         mPresenter = new MyPresenter();
10         getLifecycle().addObserver(mPresenter);
11     }
12
13     @Override
14     protected void onResume() {
15         super.onResume();
16         Log.d(TAG, "onResume");
17     }
18
19     @Override
20     protected void onPause() {
21         super.onPause();
22         Log.d(TAG, "onPause");
23
24     }
25 }

MainActivity成为了被观察者,当它的生命周期发生变化时,MyPresenter就可以观察到,这样就不需要在MainActivity的多个生命周期方法中调用MyPresenter的方法了。
打印的日志如下:

D/test: onResume
D/test: Lifecycle call onResume
D/test: Lifecycle call onPause
D/test: onPause

  

  

原文地址:https://www.cnblogs.com/ganchuanpu/p/11617740.html

时间: 2024-08-30 17:55:26

Jetpack架构组件(二)Lifecycle使用的相关文章

Android Jetpack架构组件:一文带你了解Lifecycle(使用篇)

前言 这一篇文章来介绍Android Jetpack架构组件的Lifecycle,Lifecycle用于帮助开发者管理Activity和Fragment 的生命周期,由于Lifecycle是LiveData和ViewModel的基础,所以需要先学习它. 1.为什么需要Lifecycle 在应用开发中,处理Activity或者Fragment组件的生命周期相关代码是必不可免的, 官方文档中举了一个例子,这里简化一下,在Activity中写一个监听,在Activity的不同生命周期方法中调用这个监听

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

我们先将重要的这些类挑选出来: LifecycleObserver接口( Lifecycle观察者):实现该接口的类,通过注解的方式,可以通过被LifecycleOwner类的addObserver(LifecycleObserver o)方法注册,被注册后,LifecycleObserver便可以观察到LifecycleOwner的生命周期事件. LifecycleOwner接口(Lifecycle持有者):实现该接口的类持有生命周期(Lifecycle对象),该接口的生命周期(Lifecyc

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

Android 架构组件 之 ViewModel 学习

Overview 今天在学习的过程中,我学了一下Android的架构组件之ViewModel的学习操作.ViewModel也是属于我们的Android Jetpack的一部风. Android 开发者文档中是这么说的: ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据.ViewModel 类让数据可以在发生旋转等配置更改后继续存在的. 看一看我们是如何使用ViewModel的 架构组件为界面控制器提供了ViewModel 辅助程序类,该类负责为界面准备数据,在配置更改期间会

android 架构组件 - viewmodel

ViewModel类旨在以生命周期的方式存储和管理与ui相关的数据.ViewModel类允许数据在诸如屏幕旋转之类的配置更改中存活. 注意:要将ViewModel导入到您的Android项目中,请参见向您的项目添加组件. Android框架管理UI控制器的生命周期,比如activities和fragments.该框架可能会决定销毁或重新创建UI控制器,以响应完全超出您控制的某些用户操作或设备事件. 如果系统破坏或重新创建一个UI控制器,那么存储在其中的任何与UI相关的数据都将丢失.例如,你的应用

从零开始学android<RatingBar评分组件.二十三.>

如果现在用户要对某个应用程序打分往往会使用图所示的组件,通过选择的"五角星"的个数来决定最终的打分成绩 这样的功能在Android之中,可以使用RatingBar组件实现,使用此组件可以方便用户的输入,而且很直观,RatingBar类的定义结构如下: java.lang.Object ? android.view.View ? android.widget.ProgressBar ? android.widget.AbsSeekBar ? android.widget.RatingBa

三层架构(二)——为什么要用三层架构?

二.为什么要用三层架构? 1.分析 层次结构在现实社会中随处可见.记得有个笑话讲有个村长得意的向他的老婆吹牛:"全中国比我官大的只有四个人,乡长.县长.省长和国务院总理",这个笑话体现了真实社会的分层现象,社会人群会分层,公司管理人员结构也会分层, 楼房是分层的,甚至做包子的笼屉也是分层的,虽然分层的目的各有不同,但都是为了解决某一问题而产生的,所以分层架构是为了解决某一问题而产生的解决方案. 社会分工的优势:让适合的人做自己最擅长的事情,缩短劳动时间,提高劳动效率.人尽其才,物尽其用

Ext4文件系统架构分析(二)

接着上一篇博文,继续分析Ext4磁盘布局中的元数据. 1.7 超级块 超级块记录整个文件系统的大量信息,如数据块个数.inode个数.支持的特性.管理信息,等待. 如果设置sparse_super特性标志,超级块和块组描述符表的冗余备份仅存放在编号为0或3.5.7的幂次方的块组中.如果未设置sparse_super特性标志,冗余备份存在与所有的块组中.以下是2.6.32.18内核中对Ext4超级块的描述: 3.0的内核中,Ext4的超级块加入了以下相关元数据:快照.文件系统错误处理相关.挂载选项