美文网首页
Jetpack-LifeCycle记录

Jetpack-LifeCycle记录

作者: 東方月初 | 来源:发表于2020-06-22 17:19 被阅读0次

初次见到这个心仪的男人,她就假装扭脚碰洒了一杯水,男人衬衫湿了大半,然后一眼看到始作俑者的明眸皓齿和俏皮笑容,呆在当场。

感知生命周期。

1. LifeCycle创建

新建一个类实现LifecycleObserver接口,接下来就可以定义方法为所欲为了。

package com.litton.myjetpack.lifecycle

import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import timber.log.Timber


/**
 * Created by littonishir on 2020/6/22.
 */
class MyLifecycle(val lifecycle: Lifecycle) : LifecycleObserver {

    /**
     * 将Lifecycle对象传进来,
     * 我们就可以在任何地方主动来获取当前的生命周期状态。
     * Lifecycle.State 是一个枚举类型,共如下五种状态类型。
     */
    fun getCurrentState() {
        when (lifecycle.currentState) {
            Lifecycle.State.INITIALIZED -> {
                Timber.e("INITIALIZED")
            }
            Lifecycle.State.CREATED -> {
                Timber.e("CREATED")
            }
            Lifecycle.State.STARTED -> {
                Timber.e("STARTED")
            }
            Lifecycle.State.RESUMED -> {
                Timber.e("RESUMED")
            }
            Lifecycle.State.DESTROYED -> {
                Timber.e("DESTROYED")
            }
        }

    }

    /**
     * Lifecycle.Event 是一个枚举类型,共七种状态类型
     * 这里展示了六种,Lifecycle.Event.ON_ANY 可以匹配任何生命周期回调。
     */
    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    fun create() {
        Timber.e("ON_CREATE")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    fun start() {
        Timber.e("ON_START")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    fun resume() {
        Timber.e("ON_RESUME")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    fun pause() {
        Timber.e("ON_PAUSE")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    fun stop() {
        Timber.e("ON_STOP")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    fun destroy() {
        Timber.e("ON_DESTROY")
    }
}

2. LifeCycle使用

只要添加一行这样的代码lifecycle.addObserver( ),MyLifecycle就可以感知生命周期了。

class MyLifecycleActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_lifecycle_test)
        //界面时长记录
        lifecycle.addObserver(mChronometer)
        //lifecycle示例
        lifecycle.addObserver(MyLifecycle(lifecycle))
    }
}

晓示例

  1. 计时器控件
   package com.litton.myjetpack.lifecycle
   
   import android.content.Context
   import android.os.SystemClock
   import android.util.AttributeSet
   import android.widget.Chronometer
   import androidx.lifecycle.Lifecycle
   import androidx.lifecycle.LifecycleObserver
   import androidx.lifecycle.OnLifecycleEvent
   
   
   /**
    * 计时器控件(带有生命周期感应)
    * 记录界面显示时长,只有控件在前台显示时记录时长。
    * Created by littonishir on 2020/6/22.
    */
   class CharonX(context: Context?, attrs: AttributeSet?) : Chronometer(context, attrs),
       LifecycleObserver {
       private var elapsedTime = 0L
   
       @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
       private fun resume() {
           setBase(SystemClock.elapsedRealtime() - elapsedTime)
           start()
       }
   
       @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
       private fun pause() {
           elapsedTime = SystemClock.elapsedRealtime() - base
           stop()
       }
   }

持续更新中...

相关文章

  • Jetpack-LifeCycle记录

    初次见到这个心仪的男人,她就假装扭脚碰洒了一杯水,男人衬衫湿了大半,然后一眼看到始作俑者的明眸皓齿和俏皮笑容,呆在...

  • 【原创】jetpack-Lifecycle

    jetpack-Lifecycle ComponentActivity 实现 LifecycleOwner接口,而...

  • Jetpack-ViewModel

    Jetpack-Lifecycle Jetpack-LiveData ViewModel ViewModel是以能...

  • Jetpack-Startup源码解析

    Startup源码解析 源码版本:Startup:1.1.0 导航:Jetpack-Lifecycle源码解析[h...

  • Jetpack-Lifecycle

    Lifecycle介绍 相关类和接口 使用 实现原理 Lifecycle-生命周期感知组件 Lifecycle是J...

  • Jetpack-Lifecycle

    痛点,Lifecycle解决了什么 MVP中的presenter感知activity或者fragment的生命周期...

  • Jetpack-Lifecycle

    Lifecycle概述 Lifecycle是生命周期感知型组件,可感知组件(如 Activity、 Fragmen...

  • JetPack-Lifecycle

    概述 Lifecycle是生命周期感知型组件,用于存储有关组件(如 Activity 或 Fragment)的生命...

  • Jetpack-Lifecycle

    lifecycle是jetpack的架构组件成员,其主要作用是对Activity/Fragment的生命周期进行监...

  • Jetpack-Lifecycle

    使用生命周期感知型组件处理生命周期 生命周期感知型组件可执行操作来响应另一个组件(如 Activity 和 Fra...

网友评论

      本文标题:Jetpack-LifeCycle记录

      本文链接:https://www.haomeiwen.com/subject/hjhffktx.html