鸿蒙OS开发文档 鸿蒙OS ActiveData

2024-02-25 开发教程 鸿蒙OS开发文档 匿名 2

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()

方法总结

修饰符和类型方法描述
voidaddObserver(DataObserver<T> observer, boolean always)添加数据观察者。
TgetData()获取活动数据。
voidremoveObserver(DataObserver<T> observer)删除数据观察者。
voidsetData(Tvalue)设置要观察的数据。
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

构造函数详细信息

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()

获取活动数据。

返回:

返回活动数据