codecamp

鸿蒙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 继承的方法
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()

获取活动数据。

返回:

返回活动数据

鸿蒙OS ohos.aafwk.abilityjet.activedata概述
鸿蒙OS DataObserver
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

鸿蒙OS 开发

鸿蒙OS 术语

鸿蒙OS Java API参考

鸿蒙OS ohos.aafwk.ability

鸿蒙OS ohos.aafwk.abilityjet.activedata

鸿蒙OS ohos.aafwk.content

鸿蒙OS java.lang

鸿蒙OS java.Util

鸿蒙OS java.Util class

鸿蒙OS ohos.data.dataability

鸿蒙OS ohos.data.dataability class

鸿蒙OS ohos.agp.components

鸿蒙OS ohos.agp.components interface

鸿蒙OS ohos.agp.components class

鸿蒙OS ohos.global.configuration

鸿蒙OS java.io

鸿蒙OS ohos.data.resultset

鸿蒙OS ohos.data.resultset interface

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }