vue快速搭建网站,关键词热度,施工企业会计案例分析论文,宝安各大网站制作比较好的一、前言为了使开发者能尽快在 Android 平台上开发出高质量的项目#xff0c;Android 官方推出了 Android Jetpack 项目#xff0c;旨在从基础#xff0c;架构#xff0c;行为以及界面 4 大方面体系化地为我们提供组件级别的支持。当然#xff0c;在实际开发过程中#x…一、前言为了使开发者能尽快在 Android 平台上开发出高质量的项目Android 官方推出了 Android Jetpack 项目旨在从基础架构行为以及界面 4 大方面体系化地为我们提供组件级别的支持。当然在实际开发过程中我们的旧项目甚至是新项目都不可能完全采用其全部的解决方案。一般来说我们都是各取所需汲长补短。我最关注的是其所提供的架构方面的组件 这一套架构的核心组件Lifecycles、LiveData、ViewModel、Room也被称之为 AAC。通过 AAC DataBinding MVVM 所打造的应用的基础架构就目前的实践来看是特别简洁且高效的。对于中小型项目来说是优秀的可选方案之一。而今天我们要了解的就是 Lifecycles 组件。二、Lifecyces 基础Lifecyces 根据官方的解释是一个生命可感知的组件。如下是官方关于 Lifecycels 的一张功能说明图。Lifecycels从图上来看其主要包括了状态(states)以及事件(events)两个概念且状态与事件也是一一对应的。不过现在看这张图肯定是有一点懵逼的。我们需要通过分解一下官方的 demo 来直观感受一下 Lifecycles 的用法。其过程如下1. 实现LifecycleObserver首先我们需要实现一个 LifecycleObserver你可以把它等同于观察者模式中的 Observer。在这里它就是事件的接受收器。而对于每一个不同的事件则通过在实现类的方法中添加相应的 OnLifecycleEvent(Lifecycle.Event.xxx) 注解来实现的。具体代码如下所示。public class MyObserver implements LifecycleObserver {OnLifecycleEvent(Lifecycle.Event.ON_CREATE)public void onCreate() {}OnLifecycleEvent(Lifecycle.Event.ON_START)public void onStart() {}OnLifecycleEvent(Lifecycle.Event.ON_RESUME)public void onResume() {}OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)public void onPause() {}OnLifecycleEvent(Lifecycle.Event.ON_STOP)public void onStop() {}OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)public void onDestroy() {}}2. 实现 LifecycleOwner其次就是要实现一个 LifecycleOwner一般来说就是 Activity 或者 Fragment 来实现是比较合适的。当然不是这 2 者中的一个也是可以的只要你愿意。public class MyActivity extends Activity implements LifecycleOwner {NonNullOverridepublic Lifecycle getLifecycle() {return null;}}3. 向 LifecycleOwner 注册 LifecycleObserver建立起两者之间的连接有了接收事件的观察者/接收者也有了发送事件的生命周期拥有者/发送者其不可能平白无故的就建立起连接的。因此我们需要一个连接者——LifecycleRegistry。一般来说我们在实现了 LifecycleOwner 的 Activity 中声明它的变量并在 onCreate() 方法中实例化。然后再通过变量向其添加 LifecycleObserver。如下代码所示。public class MyActivity extends Activity implements LifecycleOwner {private LifecycleRegistry mLifecycleRegistry;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);mLifecycleRegistry new LifecycleRegistry(this);getLifecycle().addObserver(new MyObserver());}NonNullOverridepublic Lifecycle getLifecycle() {return mLifecycleRegistry;}}4. mark 状态发送事件接下来我们需要在其生命周期的方法里mark 出生命周期的状态以使得其可以产生一个对应的事件发送到 LifecycleObserver 相应的方法上。如下代码所示。public class MyActivity extends Activity implements LifecycleOwner {private LifecycleRegistry mLifecycleRegistry;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);mLifecycleRegistry new LifecycleRegistry(this);mLifecycleRegistry.markState(Lifecycle.State.CREATED);}Overridepublic void onStart() {super.onStart();mLifecycleRegistry.markState(Lifecycle.State.STARTED);}............NonNullOverridepublic Lifecycle getLifecycle() {return mLifecycleRegistry;}}通过以上 4 个步骤后以后再也不用逐个逐个在生周期里面去调用相应的 Listener 或者 Controller 了。三、原理简析Lifecycels 工作原理图从原理图上看以 LifecycleRegistry 为中心其拥有一个 LifecycleOwner 实例和多个 LifecycleObserver 实例。由 LifecycleOwner 通过 LifecycleRegistry 来 markState 然后又由其来 dispatch 各个 Event 到所有 LifecycleOwner 的相应事件的方法中。四、后记关于 Lifecycles 组件就讲这么多暂时也不打算涉及到其源码的分析。最后感谢你能读到并读完此文章。受限于作者水平有限如果存在错误或者疑问都欢迎留言讨论。如果我的分享能够帮助到你也请记得帮忙点个赞吧鼓励我继续写下去谢谢。