Lifecycle的基本使用

一、Lifecycle的基本使用

1. 使用方式一

MyListener.kt

package com.example.mylifecycle.use1

import android.util.Log

class MyListener {
    private val TAG = "MyListener"

    fun start() = Log.d(TAG, "start run...")

    fun stop() = Log.d(TAG, "stop run...")
}

MainActivity.kt

package com.example.mylifecycle.use1

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.example.mylifecycle.R

// TODo 第一个版本  监听器监听生命周期
class MainActivity : AppCompatActivity() {
    private var myListener : MyListener? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        myListener = MyListener()
    }

    override fun onStart() {
        super.onStart()
        myListener?.start()
    }

    override fun onStop() {
        super.onStop()
        myListener?.stop()
    }
}

2. 使用方式二

MyPresenter.kt

package com.example.mylifecycle.use2

import android.util.Log

class MyPresenter {
    private val TAG = "MyPresenter"
    
    fun onResume() = Log.d(TAG, "onResume run ...")
    
    fun onPause() = Log.d(TAG, "onPause run ...")
}

MainActivity.kt

package com.example.mylifecycle.use2

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.mylifecycle.R

// TODO 第二个版本 MVP
class MainActivity : AppCompatActivity() {
    private var myPresenter : MyPresenter ?= null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        myPresenter = MyPresenter()
    }

    override fun onResume() {
        super.onResume()
        myPresenter?.onResume()
    }

    override fun onPause() {
        super.onPause()
        myPresenter?.onPause()
    }

}

3. 使用方式三

MyObserver.kt

package com.example.mylifecycle.use3

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

// 观察者
class MyObserver : LifecycleObserver {

    private val TAG = "MyObserver"

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)  // 画面可见  就连接
    fun connectListener() = Log.d(TAG, "connectListener run ...")

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)   // 画面不可见 就断开连接
    fun disConnectListener() = Log.d(TAG, "disConnectListener run...")

}

MyObserver2.kt

package com.example.mylifecycle.use3

import android.util.Log
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner

// DefaultLifecycleObserver 就是对LifecycleObserver 二次封装 为了用户好用
class MyObserver2 : DefaultLifecycleObserver {

    private val TAG = "MyObserver2"

    override fun onCreate(owner: LifecycleOwner) {
        //super.onCreate(owner)
        Log.d(TAG, "onCreate on ...")
    }

    override fun onResume(owner: LifecycleOwner) {
        //super.onResume(owner)
        Log.d(TAG, "onResume run ...")
    }

    override fun onPause(owner: LifecycleOwner) {
        //super.onPause(owner)
        Log.d(TAG, "onPause run ...")
    }
}

MainActivity.kt

package com.example.mylifecycle.use3

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity

// TODO 第三个版本 LifecycleObserver
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // 一般是在BaseActivity 关联注册
        // 观察者 与 被观察者 关联的环节
        lifecycle.addObserver(MyObserver())
        lifecycle.addObserver(MyObserver2())
    }
}

4. 使用版本四

package com.example.mylifecycle.use4

import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import com.example.mylifecycle.R

// TODO 第四个版本 内部类监听
class MainActivity : AppCompatActivity() {
    private val TAG = "MainActivity"

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    inner class MyObserver : LifecycleObserver {
        @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
        fun onResume() {
            Log.d(TAG, "Lifecycle call onResume ...")
        }

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

}```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值