📜  LifecycleObserever 与 Android 中的活动

📅  最后修改于: 2022-05-13 01:55:45.479000             🧑  作者: Mango

LifecycleObserever 与 Android 中的活动

LifecycleObserever is Observer 是 Jetpack Architecture 组件之一,是一个接口,它根据 Lifecycle 所有者的 Lifecycle 更改来观察和执行指定的任务。比如 MainActivity 有自己的生命周期,它本身就是 Lifecycle 的拥有者,我们可以实现 LifecycleObserever 接口,将这个观察者附加到 MainActivity 上,这样随着 MainActivity 生命周期的变化,可以执行某些操作。在本文中,展示了 LifecycleObserever 如何在 Lifecycle 所有者的生命周期更改时执行任务。请观看以下视频以了解讨论的概述。

为 Android 应用程序实现 LifecycleObserever 的步骤

第 1 步:创建一个空的活动项目

创建一个空的活动 Android Studio 项目并选择Kotlin作为编程语言。参考安卓 |如何在 Android Studio 中创建/启动新项目?

第 2 步:添加所需的依赖项



将以下依赖项添加到应用级 Gradle 文件中。依赖是生命周期的

并在应用级 gradle 文件下的插件中启用 kapt 插件。

如果无法获得如何添加依赖项,请查看以下图像。

第 3 步:使用 acitivity_main.xml 文件

应用程序的主要布局是activity_main.xml 文件只包含一个TextView。要实现 UI,请调用activity_main.xml文件中的以下代码。

XML


  
    
  


Kotlin
import android.util.Log
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
  
class MainActivityObserver : LifecycleObserver {
  
    private val TAG = javaClass.simpleName
  
    // To observe the onCreate state of MainActivity
    // and perform the assigned tasks
    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    fun onCreatePerformTask() {
        // here for demonstration purpose the Log messages are printed in logcat
        // one may perform their own custom tasks
        Log.i(TAG, "I\'m inside Observer of MainActivity ON_CREATE")
    }
  
    // To observe the onResume state of MainActivity
    // and perform the assigned tasks
    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    fun onResumePerformTask() {
        // here for demonstration purpose the Log messages are printed in logcat
        // one may perform their own custom tasks
        Log.i(TAG, "I\'m inside Observer of MainActivity ON_RESUME")
    }
}


Kotlin
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // attach the MainActivityObserver 
          // to the MainActivity as follows
        lifecycle.addObserver(MainActivityObserver())
    }
}


输出界面:



第 4 步:创建一个实现 LifecycleObserver 的类

创建一个类MainActivityObserver.kt ,它实现 LifecycleObserver 接口,该接口包含在所有者的生命周期发生变化时执行指定任务的功能。在这种情况下,所有者是MainActivity.kt ,它有自己的生命周期。通过下面的类,观察MainActivity生命周期的变化。在 MainActivityObserver.kt文件中调用以下代码。

科特林

import android.util.Log
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
  
class MainActivityObserver : LifecycleObserver {
  
    private val TAG = javaClass.simpleName
  
    // To observe the onCreate state of MainActivity
    // and perform the assigned tasks
    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    fun onCreatePerformTask() {
        // here for demonstration purpose the Log messages are printed in logcat
        // one may perform their own custom tasks
        Log.i(TAG, "I\'m inside Observer of MainActivity ON_CREATE")
    }
  
    // To observe the onResume state of MainActivity
    // and perform the assigned tasks
    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    fun onResumePerformTask() {
        // here for demonstration purpose the Log messages are printed in logcat
        // one may perform their own custom tasks
        Log.i(TAG, "I\'m inside Observer of MainActivity ON_RESUME")
    }
}

步骤 5:将 MainActivityObserver 附加到 MainActivity.kt 文件

现在需要通过附加观察者MainActivityObserver来通知活动,以便在活动状态发生变化时可以执行所需的任务。在 MainActivity.kt文件中调用以下代码。

科特林

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // attach the MainActivityObserver 
          // to the MainActivity as follows
        lifecycle.addObserver(MainActivityObserver())
    }
}

输出:

这里的输出显示在 logcat 中,因为观察者类中有一个 info logging 语句。

想要一个更快节奏和更具竞争力的环境来学习 Android 的基础知识吗?
单击此处前往由我们的专家精心策划的指南,旨在让您立即做好行业准备!