}
上面这样的代码当然没有问题了,可以正常使用,我们还严谨地保护了App不发生内存泄漏,值得表扬!
但是还有问题:
-
无法保证调用一致性,在多人协作开发时存在很大的隐患
-
调用不够优雅
-
代码侵入性太强
如果当前App有很多的Activity要用到划词播放这个功能,那么我们就需要在每一个Activity中重复上面的代码,当代码量上来之后,会很容易遗忘调用unAttach方法,而且一个项目不可能是之后一个人完成,往往是协作开发,如果别人写的界面想要调用你写的ContentPlayer,除非你写了很详细的注释,否则必须深入源码,才知道在Activity的onDestory处去释放资源。
更优雅,更安全的写法,就是利用Lifecycle组件
Lifecycle的出现如何解决问题
==================
在进一步使用Lifecycle优化上述代码之前,先看一下Lifecycle的官方定义:
生命周期感知型组件可执行操作来响应另一个组件(如 Activity 和 Fragment)的生命周期状态的变化。这些组件有助于您写出更有条理且往往更精简的代码,这样的代码更易于维护。
也就是说,我们写代码中开发的某个组件需要去感知生命周期时,要首先想到使用Lifecycle。
可以让我们在组件内部来监听到生命周期,就像这样:
object ContentPlayer : LifecycleObserver{
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
fun prepare(context: Context) {
//播放器的准备工作
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
fun unAttach() {
//释放当前持有的Activity资源
}
}
通过方法注解,决定当前方法被调用的时机。之后在需要使用ContentPlayer的Activity中去注册观察者
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 一行代码搞定
lifecycle.addObserver(ContentPlayer)
}
用到划词播放的界面只需通过一行代码,lifecycle.addObserver(ContentPlayer)注册lifecycle观察者。完美解决了调用一致性和代码侵入性太强的问题。
Lifecycle给其他Jectpack相关组件铺路
==========================
Lifecycle除了给我们开发者使用之外,在Android源码很 Lifecycle组件是Google Jectpack架构的基础,Jectpack的组件:databing、viewmodel等等都依赖于lifecycle对生命周期的感知,所以我认为在学习jectpack和MVVM之前,需要先了解一下Lifecycle的使用和 基本实现原理
底层原理+项目实战+面试专题
点击即可领取 Android进阶、架构设计、NDK、跨平台、底层源码,面试资料,Flutter源码解析资料
(包含Android技能图谱+开源框架源码+视频解析+大厂面试题)
关于面试的充分准备
一些基础知识和理论肯定是要背的,要理解的背,用自己的语言总结一下背下来。
虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,我能明显感觉到国庆后多了很多高级职位,所以努力让自己成为高级工程师才是最重要的。
好了,希望对大家有所帮助。
接下来是整理的一些Android学习资料,有兴趣的朋友们可以关注下我免费领取方式。
①Android开发核心知识点笔记
②对标“阿里 P7” 40W+年薪企业资深架构师成长学习路线图
③面试精品集锦汇总
④全套体系化高级架构视频
**Android精讲视频领取学习后更加是如虎添翼!**进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
获取方式:【Android架构视频+BAT面试专题PDF+学习笔记】
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
10970335861)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
[外链图片转存中…(img-3fkBAfPw-1710970335861)]