栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android Lifecycle中两种Observer的使用方式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android Lifecycle中两种Observer的使用方式

活动中add观测者的具体步骤就不说了,主要说一下在实现Observer接口中方法调用的区别(实现的效果相同)。

//首先实现你想实现的接口
class AdvertisingManage : xxxObserver {

1.LifecycleObserver

class AdvertisingManage : LifecycleObserver {
    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    fun start(){
        Log.d(TAG, "开始计时")
        countDownTimer?.start()
    }

    
    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    fun onCancel(){
        Log.d(TAG, "停止计时")
        countDownTimer?.cancel()
        countDownTimer = null
    }

实现此接口时会使用注解的方式来调用方法,但是因为注解会使用反射等操作,官方并不建议这么做,对注解进行了废弃。作为资深强迫症患者很难接受横杠的出现,故使用第二种方法。

2.DefaultLifecycleObserver

这个方法不使用注解,而是通过重写方法来区分在某个生命周期中执行什么逻辑,更加直观。下面看代码:

class AdvertisingManage : DefaultLifecycleObserver {
override fun onCreate(owner: LifecycleOwner) {
        super.onCreate(owner)
        start()
    }

    override fun onDestroy(owner: LifecycleOwner) {
        super.onDestroy(owner)
        onCancel()
    }

这里的start()和onCancel()方法就是上一条LifecycleObserver中我定义的方法,这里图省事直接调用过来了。

虽然注解的方式也非常简便,但我认为还是以官方推荐为准,所以使用声明DefaultLifecycleObserver接口并重写的方式更加妥当。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031868.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号