阅读(2725) (0)

鸿蒙OS ActiveData

2022-04-13 16:23:11 更新

ActiveData

java.lang.Object

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

public class ActiveData<T>
extends Object

保存数据并观察数据变化。

ActiveData 可用于在 Model 中保存 Component 数据或在 Model 中记录数据库数据。 ActiveData本质上是一个数据类,增加了观察者来观察它的数据变化。 当发生数据更改时,ActiveData 对象可以将更改通知其观察者。

在观察 ActiveData 的同时,它还观察 DataObserver 的生命周期变化。通常,只有当承载观察者的 AbilitySlice 处于前台(ACTIVE 状态)时,才能通知 DataObserver 数据变化,因为它不需要知道其他状态的实时数据变化。返回到前台后,DataObserver 将被通知最近的数据变化。

即使 AbilitySlice 处于后台状态,ActiveData 也可以通知观察者数据更改。要启用此功能,请在添加观察者时将 addObserver(ohos.aafwk.abilityjet.activedata.DataObserver,boolean) 方法中的 always 参数设置为 true。

您不需要维护观察者。当 AbilitySlice 的生命周期被销毁时,相关的观察者会被自动移除。因此,ActiveData 可以看作是一种可观察的数据类型,可以观察生命周期状态。 ActiveData 的最大优势在于它充当生命周期观察者,并根据对象的生命周期通知其他观察者数据的变化。

使用 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);
            }
        }
 }

构造函数摘要

构造函数 描述
ActiveData()

方法总结

修饰符和类型 方法 描述
void addObserver(DataObserver<T> observer, boolean always) 添加数据观察者。
T getData() 获取活动数据。
void removeObserver(DataObserver<T> observer) 删除数据观察者。
void setData(T value) 设置要观察的数据。
从类 java.lang.Object 继承的方法
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

构造函数详细信息

ActiveData

public ActiveData()

Method Detail

addObserver

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

添加数据观察者。

添加数据观察者后,会在数据发生变化时得到通知。

参数:

参数名称 参数描述
observer 指示为接收数据更改通知而添加的数据观察者。 该值不能为空。
always 指定是否在任何生命周期状态下发送数据更改通知。 值 true 表示在任何生命周期状态下发送通知。 值 false 表示仅当对象处于前台(ACTIVE 状态)时才发送通知。

Throws:

Throw名称 Throw描述
IllegalArgumentException 无效的参数

removeObserver

public void removeObserver(DataObserver<T> observer)

删除数据观察者。

删除数据观察者后,将不再收到数据更改通知。

参数:

参数名称 参数描述
observer 指示要删除的数据观察者。

setData

public void setData(T value)

设置要观察的数据。

参数:

参数名称 参数描述
value 表示要观察的数据。

getData

public T getData()

获取活动数据。

返回:

返回活动数据