长久以来,Android官方一直没有一个规范的项目架构,只要能实现功能,代码你可以随便写。Android开发者基本也是处于放养的状态,生态这东西基本全靠自建了。直到Jetpack的出现,很大程度的帮大家解决了这一问题。作为开发组件库集,Jetpack的主要目的就是帮助开发者写出更加简洁的代码,简化开发过程。且其中的大部分组件不依赖于任何Android版本,拥有非常好的向下兼容性。
可以看到Jetpack基本有基础、架构、行为、界面这4个部分组成,众多组件中,我们最需要关注的还是架构组件。尤其是Lifecycle和Livedata,为我们的开发过程提供了很大的便利。
Lifecycle&Livedata
Lifecycle-Lifecycle是生命周期感知型组件,可执行操作来响应另一个组件(如 Activity 和 Fragment)的生命周期状态的变化,并将变化通知到已注册的观察者。它有助于更好地组织代码,让代码逻辑符合生命周期规范,减少内存泄漏,增强稳定性。
本质上Lifecycle就是一个观察者模式,来监听Activity或者Fragment的生命周期。对于android开发来说,界面的生命周期是非常重要的,处理不好的话很容易导致内存泄漏的问题。在android开发中,很多功能的实现都需要在不同的生命周期中进行相应操作的调用。
比如说地图:定位需要在onStart中执行start操作,在onStop中执行stop操作;还有播放器需要在onStart中的进行连接,在onStop中进行中断连接的操作。如果我们忘记了在onStop或者onDestory中释放资源,那么就会导致内存泄漏的问题。而Lifecycle可以很好地帮我们解决这一问题。
Livedata-在诞生之初,很多人都觉得它是鸡肋般的存在。但是随着Google的大力扶持,以及其本身优秀的设计和轻量级,获得了越来越多的青睐。
Livedata的本质是观察者模式,它就像一个容器,每当其中的数据发生变化,我们都可以在回调函数中做出相应处理。事件发射的上游和接收事件的下游互不干涉,大幅降低互相持有的依赖关系所带来的强耦合性。除此之外,它还具备很多优点:
-
确保 UI 界面始终和数据状态保持一致。
-
没有内存泄漏,观察者绑定到 Lifecycle 对象并在其相关生命周期 destroyed 后自行解除绑定。
-
不会因为 Activity 停止了而奔溃,如 Activity finish 了,它就不会收到任何 LiveData 事件了。
-
UI 组件只需观察相关数据,不需要停止或恢复观察,LiveData 会自动管理这些操作,因为 LiveData 可以感知生命周期状态的更改。
-
在生命周期从非激活状态变为激活状态,始终保持最新数据,如后台 Activity 在返回到前台后可以立即收到最新数据。
-
LiveData 很适合用于组件(Activity / Fragment)之间的通信。
Jetpack也是目前面试中的加分项,而在Jetpack中,Lifecycle&Livedata可以说是我们最常用的两个组件。
/ 如何学习Lifecycle&Livedata /
为了更好地帮助大家掌握Jetpack最关键的两个组件,早日成为真正的中高级Android开发者,本次特邀腾讯课堂前三星/小米高级研发经理为大家整理了一份《Jetpack架构从入门到精通》学习资料,需要的可以去文末扫码免费领取。
目录
一、Jetpack架构组件从入门到精通
二、Android Jetpack实战和教程
- Android Jetpack - Navigation
- Android Jetpack - Data Binding
- Android Jetpack - ViewModel & LiveData
- Android Jetpack - Room
- Android Jetpack - Paging
- Android Jetpack - WorkManger
- Android Jetpack - Paging 3
- …