掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流

創(chuàng)新互聯(lián)公司主營甘孜州網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App制作,甘孜州h5重慶小程序開發(fā)搭建,甘孜州網(wǎng)站營銷推廣歡迎甘孜州等地區(qū)企業(yè)咨詢
java.lang.Object
|---ohos.aafwk.abilityjet.activedata.ActiveData
public class ActiveData
extends Object
保存數(shù)據(jù)并觀察數(shù)據(jù)變化。
ActiveData 可用于在 Model 中保存 Component 數(shù)據(jù)或在 Model 中記錄數(shù)據(jù)庫數(shù)據(jù)。 ActiveData本質(zhì)上是一個數(shù)據(jù)類,增加了觀察者來觀察它的數(shù)據(jù)變化。 當(dāng)發(fā)生數(shù)據(jù)更改時,ActiveData 對象可以將更改通知其觀察者。
在觀察 ActiveData 的同時,它還觀察 DataObserver 的生命周期變化。通常,只有當(dāng)承載觀察者的 AbilitySlice 處于前臺(ACTIVE 狀態(tài))時,才能通知 DataObserver 數(shù)據(jù)變化,因?yàn)樗恍枰榔渌麪顟B(tài)的實(shí)時數(shù)據(jù)變化。返回到前臺后,DataObserver 將被通知最近的數(shù)據(jù)變化。
即使 AbilitySlice 處于后臺狀態(tài),ActiveData 也可以通知觀察者數(shù)據(jù)更改。要啟用此功能,請?jiān)谔砑佑^察者時將 addObserver(ohos.aafwk.abilityjet.activedata.DataObserver,boolean) 方法中的 always 參數(shù)設(shè)置為 true。
您不需要維護(hù)觀察者。當(dāng) AbilitySlice 的生命周期被銷毀時,相關(guān)的觀察者會被自動移除。因此,ActiveData 可以看作是一種可觀察的數(shù)據(jù)類型,可以觀察生命周期狀態(tài)。 ActiveData 的最大優(yōu)勢在于它充當(dāng)生命周期觀察者,并根據(jù)對象的生命周期通知其他觀察者數(shù)據(jù)的變化。
使用 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);
}
}
}
| 構(gòu)造函數(shù) | 描述 |
|---|---|
| ActiveData() |
| 修飾符和類型 | 方法 | 描述 |
|---|---|---|
| void | addObserver(DataObserver |
添加數(shù)據(jù)觀察者。 |
| T | getData() | 獲取活動數(shù)據(jù)。 |
| void | removeObserver(DataObserver |
刪除數(shù)據(jù)觀察者。 |
| void | setData(T value) | 設(shè)置要觀察的數(shù)據(jù)。 |
| 從類 java.lang.Object 繼承的方法 |
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
public ActiveData()
public void addObserver(DataObserver
添加數(shù)據(jù)觀察者。
添加數(shù)據(jù)觀察者后,會在數(shù)據(jù)發(fā)生變化時得到通知。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| observer | 指示為接收數(shù)據(jù)更改通知而添加的數(shù)據(jù)觀察者。 該值不能為空。 |
| always | 指定是否在任何生命周期狀態(tài)下發(fā)送數(shù)據(jù)更改通知。 值 true 表示在任何生命周期狀態(tài)下發(fā)送通知。 值 false 表示僅當(dāng)對象處于前臺(ACTIVE 狀態(tài))時才發(fā)送通知。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IllegalArgumentException | 無效的參數(shù) |
public void removeObserver(DataObserver
刪除數(shù)據(jù)觀察者。
刪除數(shù)據(jù)觀察者后,將不再收到數(shù)據(jù)更改通知。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| observer | 指示要刪除的數(shù)據(jù)觀察者。 |
public void setData(T value)
設(shè)置要觀察的數(shù)據(jù)。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| value | 表示要觀察的數(shù)據(jù)。 |
public T getData()
獲取活動數(shù)據(jù)。
返回:
返回活動數(shù)據(jù)

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流