Jetpack 使用学习(一) Lifecycle

一 、实用案例

xml 页面中有一个 webview

需要:

页面中的webview 需要在activity 销毁时销毁,回收。

原本实现 :

在acitvity 中

override fun onDestroy() {
    webview.destroy()
    super.onDestroy()
}

如果有很多的生命周期变化,就会调用很多次。页面内容比较多。

lifecycle 引用:

自定义webview

class MyWebview : WebView, LifecycleObserver {
    constructor(context: Context,attributionSource: AttributeSet):super(context,attributionSource);

    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    open fun onDestroy(){
        Log.e("xxx","生命周期OnDestroy");
        destroy()
    }
}

在activity 中

myWebview=findViewById(R.id.webview)
lifecycle.addObserver(myWebview!!)

简单实用就是这样,内部实现,是通过

public class LifecycleRegistry extends Lifecycle {

    /**
     * Custom list that keeps observers and can handle removals / additions during traversal.
     *
     * Invariant: at any moment of time for observer1 & observer2:
     * if addition_order(observer1) < addition_order(observer2), then
     * state(observer1) >= state(observer2),
     */
    private FastSafeIterableMap<LifecycleObserver, ObserverWithState> mObserverMap =
            new FastSafeIterableMap<>();

FastSafeIterableMap 来管理生命监听对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值