新聞中心
場景介紹

創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、晉源網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計、商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為晉源等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
輕量級偏好數(shù)據(jù)庫是輕量級存儲,主要用于保存應(yīng)用的一些常用配置,并不適合存儲大量數(shù)據(jù)和頻繁改變數(shù)據(jù)的場景。用戶的數(shù)據(jù)保存在文件中,可以持久化的存儲在設(shè)備上。需要注意的是用戶訪問的實例包含文件所有數(shù)據(jù),并一直加載在設(shè)備的內(nèi)存中,并通過輕量級偏好數(shù)據(jù)庫的 API 完成數(shù)據(jù)操作。
接口說明
輕量級偏好數(shù)據(jù)庫向本地應(yīng)用提供了操作偏好型數(shù)據(jù)庫的 API,支持本地應(yīng)用讀寫少量數(shù)據(jù)及觀察數(shù)據(jù)變化。數(shù)據(jù)存儲形式為鍵值對,鍵的類型為字符串型,值的存儲數(shù)據(jù)類型包括整型、字符串型、布爾型、浮點型、長整型、字符串型 Set 集合。
創(chuàng)建數(shù)據(jù)庫
通過數(shù)據(jù)庫操作的輔助類可以獲取到要操作的 Preferences 實例,用于進(jìn)行數(shù)據(jù)庫的操作。
| 類名 | 接口名 | 描述 |
|---|---|---|
| DatabaseHelper | Preferences getPreferences(String name) | 獲取文件對應(yīng)的 Preferences 單實例,用于數(shù)據(jù)操作。 |
查詢數(shù)據(jù)
通過調(diào)用 Get 系列的方法,可以查詢不同類型的數(shù)據(jù)。
| 類名 | 接口名 | 描述 |
|---|---|---|
| Preferences | int getInt(String key, int defValue) | 獲取鍵對應(yīng)的 int 類型的值。 |
| Preferences | float getFloat(String key, float defValue) | 獲取鍵對應(yīng)的 float 類型的值。 |
插入數(shù)據(jù)
通過 Put 系列的方法可以修改 Preferences 實例中的數(shù)據(jù),通過 flush 或者 flushSyn c將 Preferences 實例持久化。
| 類名 | 接口名 | 描述 |
|---|---|---|
| Preferences | Preferences putInt(String key, int value) | 設(shè)置 Preferences 實例中鍵對應(yīng)的 int 類型的值。 |
| Preferences | Preferences putString(String key, String value) | 設(shè)置 Preferences 實例中鍵對應(yīng)的 String 類型的值。 |
| Preferences | void flush() | 將 Preferences 實例異步寫入文件。 |
| Preferences | boolean flushSync() | 將 Preferences 實例同步寫入文件。 |
觀察數(shù)據(jù)變化
輕量級偏好數(shù)據(jù)庫還提供了一系列的接口變化回調(diào),用于觀察數(shù)據(jù)的變化。開發(fā)者可以通過重寫 onChange 方法來定義觀察者的行為。
| 類名 | 接口名 | 描述 |
|---|---|---|
| Preferences | void registerObserver(PreferencesObserver preferencesObserver) | 注冊觀察者,用于觀察數(shù)據(jù)變化。 |
| Preferences | void unRegisterObserver(PreferencesObserver preferencesObserver) | 注銷觀察者。 |
| Preferences.PreferencesObserver | void onChange(Preferences preferences, String key) | 觀察者的回調(diào)方法,任意數(shù)據(jù)變化都會回調(diào)該方法。 |
刪除數(shù)據(jù)文件
通過調(diào)用以下兩種接口,可以刪除數(shù)據(jù)文件。
| 類名 | 接口名 | 描述 |
|---|---|---|
| DatabaseHelper | boolean deletePreferences(String name) | 刪除文件和文件對應(yīng)的Preferences單實例。 |
| DatabaseHelper | void removePreferencesFromCache(String name) | 刪除文件對應(yīng)的Preferences單實例。 |
移動數(shù)據(jù)庫文件
| 類名 | 接口名 | 描述 |
|---|---|---|
| DatabaseHelper | boolean movePreferences(Context sourceContext, String sourceName, String targetName) | 移動數(shù)據(jù)庫文件。 |
開發(fā)步驟
- 準(zhǔn)備工作,導(dǎo)入對輕量級偏好數(shù)據(jù)庫 SDK 到開發(fā)環(huán)境。
- 獲取 Preferences 實例。
讀取指定文件,將數(shù)據(jù)加載到 Preferences 實例,用于數(shù)據(jù)操作。
DatabaseHelper databaseHelper = new DatabaseHelper(context);// context入?yún)㈩愋蜑閛hos.app.Context
String fileName = "name";
Preferences preferences = databaseHelper.getPreferences(fileName);
- 從指定文件讀取數(shù)據(jù)。
首先獲取指定文件對應(yīng)的 Preferences 實例,然后借助 Preferences API 讀取數(shù)據(jù)。
java 接口 讀取整型數(shù)據(jù)
int value = preferences.getInt("intKey", 0);
- 將數(shù)據(jù)寫入指定文件。
首先獲取指定文件對應(yīng)的 Preferences 實例,然后借助 Preferences API 將數(shù)據(jù)寫入 Preferences 實例,通過 flush 或者 flushSync 將 Preferences 實例持久化。
異步:
preferences.putInt("intKey", 3);
preferences.putString("StringKey", "String value");
preferences.flush();
同步:
preferences.putInt("intKey", 3);
preferences.putString("StringKey", "String value");
preferences.flushSync();
- 注冊觀察者。
開發(fā)者可以向 Preferences 實例注冊觀察者,觀察者對象需實現(xiàn)Preferences.PreferencesObserver 接口。flushSync() 或 flush() 執(zhí)行后,該 Preferences 實例注冊的所有觀察者的 onChange() 方法都會被回調(diào)。不再需要觀察者時請注銷。
private class PreferencesChangeCounter implements Preferences.PreferencesObserver {
final AtomicInteger notifyTimes = new AtomicInteger(0);
@Override
public void onChange(Preferences preferences, String key) {
if ("intKey".equals(key)) {
notifyTimes.incrementAndGet();
}
}
}
// 向preferences實例注冊觀察者
PreferencesChangeCounter counter = new PreferencesChangeCounter();
preferences.registerObserver(counter);
// 修改數(shù)據(jù)preferences.putInt("intKey", 3);
boolean result = preferences.flushSync();
// 修改數(shù)據(jù)后,onChange方法會被回調(diào),notifyTimes == 1
int notifyTimes = counter.notifyTimes.intValue();
// 向preferences實例注銷觀察者
preferences.unRegisterObserver(counter);
- 移除 Preferences 實例。
從內(nèi)存中移除指定文件對應(yīng)的 Preferences 單實例。移除 Preferences 單實例時,應(yīng)用不允許再使用該實例進(jìn)行數(shù)據(jù)操作,否則會出現(xiàn)數(shù)據(jù)一致性問題。
DatabaseHelper databaseHelper = new DatabaseHelper(context);
// 指定文件名稱
String fileName = "name";
databaseHelper.removePreferencesFromCache(fileName);
- 刪除指定文件。
從內(nèi)存中移除指定文件對應(yīng)的 Preferences 單實例,并刪除指定文件及其備份文件、損壞文件。刪除指定文件時,應(yīng)用不允許再使用該實例進(jìn)行數(shù)據(jù)操作,否則會出現(xiàn)數(shù)據(jù)一致性問題
DatabaseHelper databaseHelper = new DatabaseHelper(context);
// 指定文件名稱
String fileName = "name";
boolean result = databaseHelper.deletePreferences(fileName);
- 移動指定文件。
從源路徑移動文件到目標(biāo)路徑。移動文件時,應(yīng)用不允許再操作該文件數(shù)據(jù),否則會出現(xiàn)數(shù)據(jù)一致性問題。
Context targetContext = XXX;
DatabaseHelper databaseHelper = new DatabaseHelper(targetContext);
// 指定文件名稱
String srcFile = "srcFile";
String targetFile = "targetFile";
Context srcContext = XXX;
boolean result = databaseHelper.movePreferences(srcContext,srcFile,targetFile); 當(dāng)前題目:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OS輕量級偏好數(shù)據(jù)庫開發(fā)指導(dǎo)
文章源于:http://www.5511xx.com/article/dhpshio.html


咨詢
建站咨詢
