IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 安卓Jetpack之Lifecycle的使用及原理刨析 -> 正文阅读

[移动开发]安卓Jetpack之Lifecycle的使用及原理刨析

为什么没有效果图呢,大家先听我来说说Lifecycle是什么东西?它的作用是什么?为什么会创造Lifecycle?明白了这三个,你就会知道小口口为什么这次不贴效果图了。

在这里插入图片描述

  • Lifecycle是什么?
    Lifecycle是Android Jetpack 的一部分。Google称它为构建生命周期感知型组件,可以根据 Activity 或 Fragment 的当前生命周期状态调整行为。你也可以理解它为一个具有生命周期的组件。
  • Lifecycle的作用是什么?
    Lifecycle可执行操作来响应另一个组件(如 Activity 和 Fragment)的生命周期状态的变化。帮助您编写出更有条理且更精简更易于维护的代码。这句话意思是说我的作用就是当我和(Activity 或者 Fragment)关联之后,它俩有的我也有,生命周期与他俩一样。跟个土财主一样自给自足,完全脱离它俩。
  • 为什么会创造Lifecycle?
    比如:onResume()方法中开启一个定时器,在onStop方法中停止这个定时器。这种方式很常见。但是,如果onResume或者onStop的代码量增大之后,这种模式会导致代码条理性很差而且会扩散错误。如果使用Lifecycle,就可以将依赖Lifecycle的代码从生命周期方法移入自定义的Lifecycle里面中。这样你的Fragment或者Activity代码就不会很臃肿啦。

所以Lifecycle确切的来说没有什么效果,但是从架构上让我们的代码变得更简洁更易于管理啦。

废话不多说,上代码:

首先,因为新版的Android Studio创建项目时会自动引入Lifecycle依赖

dependencies {
    implementation 'androidx.appcompat:appcompat:1.4.2'
    implementation 'com.google.android.material:material:1.6.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    implementation 'androidx.lifecycle:lifecycle-process:2.5.0'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

首先我们先自定义一个LifeCycle。

public class LifeCycleHandler implements DefaultLifecycleObserver {

}
注:大家可以看到我自定义的这个实现了DefaultLifecycleObserver这个类,为什么要实现?有什么作用?

那我们就来看看DefaultLifecycleObserver类里面都有什么
在这里插入图片描述
我们可以看到,它拥有自己的一套生命周期方法,而这一套方法与fragment或者activity的生命周期相互绑定。所以,我们的自定义LifeCycle里面可以这样写:

package com.jetpack.lifecycledemo;

import android.util.Log;
import androidx.annotation.NonNull;
import androidx.lifecycle.DefaultLifecycleObserver;
import androidx.lifecycle.LifecycleOwner;

public class LifeCycleHandler implements DefaultLifecycleObserver {

    @Override
    public void onCreate(@NonNull LifecycleOwner owner) {
        DefaultLifecycleObserver.super.onCreate(owner);
        Log.e("============", "onCreate");
    }

    @Override
    public void onResume(@NonNull LifecycleOwner owner) {
        DefaultLifecycleObserver.super.onResume(owner);
        Log.e("============", "onResume");
    }

    @Override
    public void onStart(@NonNull LifecycleOwner owner) {
        DefaultLifecycleObserver.super.onStart(owner);
        Log.e("============", "onStart");
    }

    @Override
    public void onPause(@NonNull LifecycleOwner owner) {
        DefaultLifecycleObserver.super.onPause(owner);
        Log.e("============", "onPause");
    }

    @Override
    public void onStop(@NonNull LifecycleOwner owner) {
        DefaultLifecycleObserver.super.onStop(owner);
        Log.e("============", "onStop");
    }

}
注:把它当作一个独立的碎片去处理。前提是要与依赖的组件相互绑定。

既然说到了绑定。怎么绑定呢?很简单:在activity里面添加一句话

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ProcessLifecycleOwner.get().getLifecycle().addObserver(new LifeCycleHandler());
    }

}

我运行下,你们看看效果:
在这里插入图片描述

Google推荐我们尽量使用生命周期感知型组件LifeCycle

在这里插入图片描述

LifeCycle—Google官方使用指南:https://developer.android.com/topic/libraries/architecture/lifecycle#implementing-lco

强烈推荐大家看看Google官方的Jetpack使用指南,可以详细了解一下Jetpack。

Q:486789970(QQ现在很少用)
V:18588400509(如果着急,可以直接加微信)
email:mr.cai_cai@foxmail.com

如果有什么问题,欢迎大家指导。并相互联系,希望能够通过文章互相学习。

											                               	---财财亲笔
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-07-20 19:00:48  更:2022-07-20 19:00:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 2:42:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码