日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android新架构,Android新架构组件 LifeCycles 简介

發布時間:2023/12/13 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android新架构,Android新架构组件 LifeCycles 简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、前言

為了使開發者能盡快在 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 {

@NonNull

@Override

public Lifecycle getLifecycle() {

return null;

}

}

3. 向 LifecycleOwner 注冊 LifecycleObserver,建立起兩者之間的連接

有了接收事件的觀察者/接收者,也有了發送事件的生命周期擁有者/發送者,其不可能平白無故的就建立起連接的。因此,我們需要一個連接者——LifecycleRegistry。一般來說,我們在實現了 LifecycleOwner 的 Activity 中聲明它的變量,并在 onCreate() 方法中實例化。然后再通過變量向其添加 LifecycleObserver。如下代碼所示。

public class MyActivity extends Activity implements LifecycleOwner {

private LifecycleRegistry mLifecycleRegistry;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

mLifecycleRegistry = new LifecycleRegistry(this);

getLifecycle().addObserver(new MyObserver());

}

@NonNull

@Override

public Lifecycle getLifecycle() {

return mLifecycleRegistry;

}

}

4. mark 狀態,"發送"事件

接下來,我們需要在其生命周期的方法里,mark 出生命周期的狀態以使得其可以產生一個對應的事件發送到 LifecycleObserver 相應的方法上。如下代碼所示。

public class MyActivity extends Activity implements LifecycleOwner {

private LifecycleRegistry mLifecycleRegistry;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

mLifecycleRegistry = new LifecycleRegistry(this);

mLifecycleRegistry.markState(Lifecycle.State.CREATED);

}

@Override

public void onStart() {

super.onStart();

mLifecycleRegistry.markState(Lifecycle.State.STARTED);

}

......

......

@NonNull

@Override

public Lifecycle getLifecycle() {

return mLifecycleRegistry;

}

}

通過以上 4 個步驟后,以后再也不用逐個逐個在生周期里面去調用相應的 Listener 或者 Controller 了。

三、原理簡析

Lifecycels 工作原理圖

從原理圖上看,以 LifecycleRegistry 為中心,其擁有一個 LifecycleOwner 實例和多個 LifecycleObserver 實例。由 LifecycleOwner 通過 LifecycleRegistry 來 markState ,然后又由其來 dispatch 各個 Event 到所有 LifecycleOwner 的相應事件的方法中。

四、后記

關于 Lifecycles 組件就講這么多,暫時也不打算涉及到其源碼的分析。

最后,感謝你能讀到并讀完此文章。受限于作者水平有限,如果存在錯誤或者疑問都歡迎留言討論。如果我的分享能夠幫助到你,也請記得幫忙點個贊吧,鼓勵我繼續寫下去,謝謝。

總結

以上是生活随笔為你收集整理的android新架构,Android新架构组件 LifeCycles 简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。