首页 > 其他分享 >Lifecycle 基础

Lifecycle 基础

时间:2022-11-02 17:22:42浏览次数:69  
标签:生命周期 LifecycleOwner 基础 观察者 lifecycleRegistry fun Lifecycle

引言

Lifecycle 组件包括

  • LifecycleOwner
  • LifecycleObserver

Lifecycle 组件是执行操作以响应另一个组件(Activity或者Fragment)的生命周期状态的更改。

一、在Activity或者Fragment中的使用

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main2)
lifecycle.addObserver(BluetoothDialog())
}
}
AppCompatActivity本身继承了LifecycleOwner接口,当owner生命周期变化时,观察者会执行相同生命周期变化的方法

二、自定义使用

1、定义观察者,继承 LifecycleObserver 

class BluetoothDialog : LifecycleObserver {

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

2、定义被观察者,继承  LifecycleOwner ,即生命周期拥有者(事件发起者)

class BluetoothView(context: Context) : Dialog(context) ,LifecycleOwner {

    /**
     * 1 创建生命周期拥有者
     */
    private var lifecycleRegistry = LifecycleRegistry(this)

    override fun getLifecycle(): Lifecycle {
        return lifecycleRegistry
    }

    /**
     * 2 添加观察者
     */
    fun registerObserver(){
        getLifecycle().addObserver(BluetoothDialog())
    }

    /**
     * 3 分发事件 ,观察者会执行相同注解的方法
     */
    fun startLife(){
        lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_START)
    }
}

 

标签:生命周期,LifecycleOwner,基础,观察者,lifecycleRegistry,fun,Lifecycle
From: https://www.cnblogs.com/suiyilaile/p/16851674.html

相关文章

  • Python基础27
    今日内容概要面向对象之人狗大战面向对象编程思想面向对象之类与对象类与对象的创建对象独有的数据对象独有的功能今日内容详细面向对象之人狗大战编写代码简单......
  • Python基础之列表,元组,字典,集合,推导式,迭代器
    目录1列表1.1定义1.2访问列表中的值1.3更新列表1.4删除列表元素1.5Python列表脚本操作符1.6Python列表截取与拼接1.7嵌套列表1.8列表比较2元组2.1定义2.2创建......
  • Python基础之函数,面向对象
    目录1函数1.1定义一个函数1.2函数调用1.3参数1.3.1必需参数1.3.2关键字参数1.3.3默认参数1.3.4不定长参数1.3.4.1不定长*:元组1.3.4.2不定长**:字典1.3.5匿名......
  • CSS基础知识筑基
    01、CSS简介CSS指层叠样式表(CascadingStyleSheets),对HTML网页内容进行统一外观样式设计和管理,给网页进行各种装饰,让她变得美观,是HTML的化妆师。(Cascading:/kæsˈk......
  • 数据库的基础操作
    数据库密码忘了怎么办?1.进入/etccdetc2.编辑my.cnfvimmy.cnf在文件内容末尾加上:skip-grant-tables保存退出wq3.重启mysql,然后mysql-uroot-p直接跳......
  • WordPress零基础建站教程:搭建本地数据库 1/10
    网页作为互联网内容的基本组成,承担了互联网几乎所有的内容展示功能,在我们点击一个链接时,几乎都是将我们转入一个网页显示界面,而我们也是通过这些形式各异的网页,打开了万紫千......
  • WordPress零基础建站教程:内网穿透将本地web站点发布到公网 5/10
    在前面的文章中,我们已经向大家介绍了如何搭建一个属于自己的网页,虽然这个网页还没有添加内容,但确实已经有了网页的基本框架,等着我们用创意和需求去填满它。为了我们的网页能......
  • WordPress零基础建站教程:配置本地数据库 2/10
    在​​上一篇文章​​中,我们介绍了如何在localhost中建立一个数据库,但此时的数据库还不能起到什么作用,因此我们需要对其进行进一步设置。而设置该数据库的第一步,就是设定用......
  • WordPress零基础建站教程:修改config.php文件生成相对URL 10/10
    上一篇​WordPress零基础建站教程:安装相对URL插件9/10​在上篇文章中我们介绍了相对URL的重要性,并在WordPress中安装了“RelativeURL”插件,这篇文章中我们就要对“Relativ......
  • WordPress零基础建站教程:安装相对URL插件 9/10
    上一篇​WordPress零基础建站教程:WordPress主题排版编辑8/10​在前面一系列的文章中,我们为大家介绍了搭建自己的Web站点,所要做的工作,而在这个系列的第6篇,我们已经能够看到......