W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
java.lang.Object
|---ohos.aafwk.abilityjet.activedata.ActiveData<T&
public class ActiveData<T>
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ù)變化,因為它不需要知道其他狀態(tài)的實時數(shù)據(jù)變化。返回到前臺后,DataObserver 將被通知最近的數(shù)據(jù)變化。
即使 AbilitySlice 處于后臺狀態(tài),ActiveData 也可以通知觀察者數(shù)據(jù)更改。要啟用此功能,請在添加觀察者時將 addObserver(ohos.aafwk.abilityjet.activedata.DataObserver,boolean) 方法中的 always 參數(shù)設(shè)置為 true。
您不需要維護觀察者。當(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<T> observer, boolean always) | 添加數(shù)據(jù)觀察者。 |
T | getData() | 獲取活動數(shù)據(jù)。 |
void | removeObserver(DataObserver<T> observer) | 刪除數(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<T> observer, boolean always)
添加數(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<T> observer)
刪除數(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ù)
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: