| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Lifecycle应用 -> 正文阅读 |
|
[移动开发]Lifecycle应用 |
上一篇?文章分析了lifecycle的源码,源码真的很枯燥,不过有了上一篇的基础,我们再来分析lifecycle的应用就简单多了。lifecycle应用中最重要的两个类是:LifecycleOwner?和??LifecycleObserver ,前者是提供lifecycle生命周期的,后者是观察者,我们马上会分析源码,先看应用: 自定义一个handler,解决内存泄漏问题:
使用如下:
就这样,我们就可以放心使用handler了,不用担心内存泄漏了。 源码分析: 1.LifecycleOwner?源码解析:
源码就这么简单,一个接口,获取lifecycle。那么他的实现类是谁呢?ComponentActivity和fragment :
简化后的代码就这么多,是不是很熟悉,LifecycleRegistry?就是上一篇我们分析的源码,我们添加的所有观察者都会放到LifecycleRegistry?的链表中,当LifecycleOwner(也就是activity)的生命周期发生改变时,会调用所有观察者的onStateChanged?方法。 2.LifecycleObserver?观察者源码分析:
空接口,什么也没有做,那么来看看他的子类:LifecycleEventObserver?
定义了一个抽象方法,状态改变的回调方法,上面分析过了。 那么lifecycle的所有源码我们都已经分析完了,其实原理很简单,就是通过一个抽象层lifecycle,将具有生命周期的对象,把生命周期暴露出来,其他所有想和他的生命周期关联的对象,都可以通过lifecycle解耦来实现,最大的用处应该就是封装第三方库和解决内存泄漏问题。 再来写两个应用案例: 1.service中使用
2.监听app进入前后台: application的oncreate中增加:
就可以方便监听应用是否处于前后台了,不过实际中发现在某些手机上不是很准。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 19:37:59- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |