鴻蒙OS ActiveData

2022-04-13 16:40 更新

ActiveData

java.lang.Object

|---ohos.aafwk.abilityjet.activedata.ActiveData<T&

public class ActiveData<T>
extends Object

保存數(shù)據(jù)并觀察數(shù)據(jù)變化。

ActiveData 可用于在 Model 中保存 Component 數(shù)據(jù)或在 Model 中記錄數(shù)據(jù)庫數(shù)據(jù)。 ActiveData本質(zhì)上是一個數(shù)據(jù)類,增加了觀察者來觀察它的數(shù)據(jù)變化。 當(dāng)發(fā)生數(shù)據(jù)更改時,ActiveData 對象可以將更改通知其觀察者。

在觀察 ActiveData 的同時,它還觀察 DataObserver 的生命周期變化。通常,只有當(dāng)承載觀察者的 AbilitySlice 處于前臺(ACTIVE 狀態(tài))時,才能通知 DataObserver 數(shù)據(jù)變化,因為它不需要知道其他狀態(tài)的實時數(shù)據(jù)變化。返回到前臺后,DataObserver 將被通知最近的數(shù)據(jù)變化。

即使 AbilitySlice 處于后臺狀態(tài),ActiveData 也可以通知觀察者數(shù)據(jù)更改。要啟用此功能,請在添加觀察者時將 addObserver(ohos.aafwk.abilityjet.activedata.DataObserver,boolean) 方法中的 always 參數(shù)設(shè)置為 true。

您不需要維護觀察者。當(dāng) AbilitySlice 的生命周期被銷毀時,相關(guān)的觀察者會被自動移除。因此,ActiveData 可以看作是一種可觀察的數(shù)據(jù)類型,可以觀察生命周期狀態(tài)。 ActiveData 的最大優(yōu)勢在于它充當(dāng)生命周期觀察者,并根據(jù)對象的生命周期通知其他觀察者數(shù)據(jù)的變化。

使用 ActiveData 的示例代碼:

 public class MainAbility extends Ability {
        private ActiveData fruitPrice;


        @Override
        protected void onStart() {
            super.onStart();
            subscribe();
        }


        @Override
        protected void onActive() {
            if(fruitPrice.getData().empty()) {
                // setData will notify Observer in subscribe.
                fruitPrice.setData(String("10"));
            }


            private void subscribe() {
                final DataObserver priceObserver = new DataObserver() {
                    @Override
                    public void onChanged(@Nullable final String s) {
                        String price = "Fruit price is " + s;
                        Text.setText(price);
                    }
                };
                fruitPrice.addObserver(priceObserver);
            }
        }
 }

構(gòu)造函數(shù)摘要

構(gòu)造函數(shù) 描述
ActiveData()

方法總結(jié)

修飾符和類型 方法 描述
void addObserver(DataObserver<T> observer, boolean always) 添加數(shù)據(jù)觀察者。
T getData() 獲取活動數(shù)據(jù)。
void removeObserver(DataObserver<T> observer) 刪除數(shù)據(jù)觀察者。
void setData(T value) 設(shè)置要觀察的數(shù)據(jù)。
從類 java.lang.Object 繼承的方法
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

構(gòu)造函數(shù)詳細信息

ActiveData

public ActiveData()

Method Detail

addObserver

public void addObserver(DataObserver<T> observer, boolean always)

添加數(shù)據(jù)觀察者。

添加數(shù)據(jù)觀察者后,會在數(shù)據(jù)發(fā)生變化時得到通知。

參數(shù):

參數(shù)名稱 參數(shù)描述
observer 指示為接收數(shù)據(jù)更改通知而添加的數(shù)據(jù)觀察者。 該值不能為空。
always 指定是否在任何生命周期狀態(tài)下發(fā)送數(shù)據(jù)更改通知。 值 true 表示在任何生命周期狀態(tài)下發(fā)送通知。 值 false 表示僅當(dāng)對象處于前臺(ACTIVE 狀態(tài))時才發(fā)送通知。

Throws:

Throw名稱 Throw描述
IllegalArgumentException 無效的參數(shù)

removeObserver

public void removeObserver(DataObserver<T> observer)

刪除數(shù)據(jù)觀察者。

刪除數(shù)據(jù)觀察者后,將不再收到數(shù)據(jù)更改通知。

參數(shù):

參數(shù)名稱 參數(shù)描述
observer 指示要刪除的數(shù)據(jù)觀察者。

setData

public void setData(T value)

設(shè)置要觀察的數(shù)據(jù)。

參數(shù):

參數(shù)名稱 參數(shù)描述
value 表示要觀察的數(shù)據(jù)。

getData

public T getData()

獲取活動數(shù)據(jù)。

返回:

返回活動數(shù)據(jù)

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號