W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
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ù)庫(kù)數(shù)據(jù)。 ActiveData本質(zhì)上是一個(gè)數(shù)據(jù)類,增加了觀察者來(lái)觀察它的數(shù)據(jù)變化。 當(dāng)發(fā)生數(shù)據(jù)更改時(shí),ActiveData 對(duì)象可以將更改通知其觀察者。
在觀察 ActiveData 的同時(shí),它還觀察 DataObserver 的生命周期變化。通常,只有當(dāng)承載觀察者的 AbilitySlice 處于前臺(tái)(ACTIVE 狀態(tài))時(shí),才能通知 DataObserver 數(shù)據(jù)變化,因?yàn)樗恍枰榔渌麪顟B(tài)的實(shí)時(shí)數(shù)據(jù)變化。返回到前臺(tái)后,DataObserver 將被通知最近的數(shù)據(jù)變化。
即使 AbilitySlice 處于后臺(tái)狀態(tài),ActiveData 也可以通知觀察者數(shù)據(jù)更改。要啟用此功能,請(qǐng)?jiān)谔砑佑^察者時(shí)將 addObserver(ohos.aafwk.abilityjet.activedata.DataObserver,boolean) 方法中的 always 參數(shù)設(shè)置為 true。
您不需要維護(hù)觀察者。當(dāng) AbilitySlice 的生命周期被銷毀時(shí),相關(guān)的觀察者會(huì)被自動(dòng)移除。因此,ActiveData 可以看作是一種可觀察的數(shù)據(jù)類型,可以觀察生命周期狀態(tài)。 ActiveData 的最大優(yōu)勢(shì)在于它充當(dāng)生命周期觀察者,并根據(jù)對(duì)象的生命周期通知其他觀察者數(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() | 獲取活動(dòng)數(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ù)觀察者后,會(huì)在數(shù)據(jù)發(fā)生變化時(shí)得到通知。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
observer | 指示為接收數(shù)據(jù)更改通知而添加的數(shù)據(jù)觀察者。 該值不能為空。 |
always | 指定是否在任何生命周期狀態(tài)下發(fā)送數(shù)據(jù)更改通知。 值 true 表示在任何生命周期狀態(tài)下發(fā)送通知。 值 false 表示僅當(dāng)對(duì)象處于前臺(tái)(ACTIVE 狀態(tài))時(shí)才發(fā)送通知。 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalArgumentException | 無(wú)效的參數(shù) |
public void removeObserver(DataObserver<T> observer)
刪除數(shù)據(jù)觀察者。
刪除數(shù)據(jù)觀察者后,將不再收到數(shù)據(jù)更改通知。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
observer | 指示要?jiǎng)h除的數(shù)據(jù)觀察者。 |
public void setData(T value)
設(shè)置要觀察的數(shù)據(jù)。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
value | 表示要觀察的數(shù)據(jù)。 |
public T getData()
獲取活動(dòng)數(shù)據(jù)。
返回:
返回活動(dòng)數(shù)據(jù)
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: