鸿蒙OS ActiveData

2022-04-13 16:40 更新

ActiveData

java.lang.Object

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

  1. public class ActiveData<T>
  2. 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 的示例代码:

  1. public class MainAbility extends Ability {
  2. private ActiveData fruitPrice;
  3. @Override
  4. protected void onStart() {
  5. super.onStart();
  6. subscribe();
  7. }
  8. @Override
  9. protected void onActive() {
  10. if(fruitPrice.getData().empty()) {
  11. // setData will notify Observer in subscribe.
  12. fruitPrice.setData(String("10"));
  13. }
  14. private void subscribe() {
  15. final DataObserver priceObserver = new DataObserver() {
  16. @Override
  17. public void onChanged(@Nullable final String s) {
  18. String price = "Fruit price is " + s;
  19. Text.setText(price);
  20. }
  21. };
  22. fruitPrice.addObserver(priceObserver);
  23. }
  24. }
  25. }

构造函数摘要

构造函数 描述
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()

获取活动数据。

返回:

返回活动数据

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号