当前位置: 移动技术网 > 移动技术>移动开发>Android > Jetpack之Lifecycle的基本使用

Jetpack之Lifecycle的基本使用

2020年07月08日  | 移动技术网移动技术  | 我要评论

Lifecycle组件是帮忙我们管理Activity和Fragment的生命周期,也就是说,当Activity或者Fragment的生命周期发送变化的时候我们可以得到通知。使用AndroidX就不需要导入额外的包,AndroidX已经包含了Jetpack相关组件了。

一:AppCompatActivity默认实现了LifecycleOwner接口,可以直接使用Lifecycle

1:创建一个类实现LifecycleObserver接口来监听生命周期

package com.lzk.jetpacktest.lifecycle

import android.util.Log
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent

class MyObserver : LifecycleObserver {

    private val TAG = this.javaClass.simpleName

    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    fun onCreate(){
        Log.d(TAG,"onCreate")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    fun onStart(){
        Log.d(TAG,"onStart")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    fun onResume(){
        Log.d(TAG,"onResume")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    fun onPause(){
        Log.d(TAG,"onPause")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    fun onStop(){
        Log.d(TAG,"onStop")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    fun onDestroy(){
        Log.d(TAG,"onDestroy")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_ANY)
    fun onAny(){
        Log.d(TAG,"onAny")
    }
}

2:在Activity/Fragment中添加Observer

因为该Activity继承自AppCompatActivity,所以可以直接获取lifecycle 

lifecycle.addObserver(MyObserver())

二:自定义Lifecycle

继承自Activity类的Activity没有实现LifecycleOwner接口,所以需要自定义Lifecycle

1:同样需要创建一个类继承自LifecycleObserver

2:Activity实现LifecycleOwner,创建一个LifecycleRegistry对象,添加Observer,然后在getLifecycle()返回该对象,这样在LifecycleObserver类中就可以监听到生命周期

package com.lzk.jetpacktest.lifecycle

import android.app.Activity
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LifecycleRegistry
import com.lzk.jetpacktest.R

/**
 * Activity没有实现LifecycleOwner接口
 */
class CusLifeCycleActivity : Activity(),LifecycleOwner {

    private lateinit var mLifecycleRegistry: LifecycleRegistry

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_cus_life_cycle)
        mLifecycleRegistry = LifecycleRegistry(this)
        mLifecycleRegistry.addObserver(MyObserver())
    }

    override fun getLifecycle(): Lifecycle {
        return mLifecycleRegistry
    }
}

参考:lifecycle使用入门 lifecycle实际使用示例

本文地址:https://blog.csdn.net/LZK_Dreamer/article/details/107169927

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网