鸿蒙OS ActiveData
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 继承的方法 |
---|
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()
获取活动数据。
返回:
返回活动数据