快速構建Windows 8風格應用27-漫遊應用數據

本篇博文主要介紹漫遊應用數據概覽、如何構建漫遊應用數據、構建漫遊應用數據最佳實踐。

漫遊應用數據概覽

1.若應用當中使用了漫遊應用數據,用戶可以很輕鬆的在不同的設備間保持應用數據的同步。

2.Windows會將更新的漫遊數據同步到雲端,並將數據更新到其他安裝此應用的設備上。

3.Windows 限制了每個應用可漫遊的應用數據大小。若我們的應用達到漫遊數據大小的限制,在應用的總漫遊數據再次少於該限制之前,不會將應用的任何數據更新到雲端,因此最好的做法是僅爲用戶首選項、鏈接和小型數據文件使用漫遊數據。

4.只要用戶在所需的時間間隔內從某個設備訪問應用的漫遊數據,這些數據將存在雲端,若用戶不在比此時間間隔更長的時間內運行應用,漫遊數據將從雲端刪除,若用戶卸載應用,漫遊數據不會自動從雲中刪除,將會保留,若用戶在該時間間隔內重新安裝該應用,會從雲端同步漫遊數據。注意:時間間隔指定爲 30 天。

5.Windows會隨機漫遊應用數據,並不保證即時同步。若用戶脫機或位於高延遲網絡中,則漫遊可能會明顯延遲。那麼對於時間關鍵的重要設置,可使用優先級特別高的設置單位提供更爲頻繁的更新。它僅限於名稱爲“HighPriority”的一個特定設置單位。它可以是複合體,但總大小限於8KB。此限值不是強制性的,當超過此限值時,設置單位或設置複合體將被視爲常規設置單位或複合體。

如何構建漫遊應用數據

1.註冊漫遊數據發生更改的事件,該事件爲DataChanged事件。

void InitHandlers()
{
   Windows.Storage.ApplicationData.Current.DataChanged += 
      new TypedEventHandler<ApplicationData, object>(DataChangeHandler);
}
void DataChangeHandler(Windows.Storage.ApplicationData appData, object o)
{
   // 更新數據
}

2.獲取應用的設置和文件容器。通常我們使用ApplicationData.RoamingSettings屬性可以獲取設置和ApplicationData.RoamingFolder屬性可以獲取文件。

Windows.Storage.ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings;
Windows.Storage.ApplicationDataContainer roamingFolder = Windows.Storage.ApplicationData.Current.RoamingFolder;

3.將數據寫入設置。

使用 ApplicationDataContainer.Values屬性進行簡單的數據寫入。

roamingSettings.Values["exampleSetting"] = "Hello World";

使用ApplicationDataCompositeValue對象進行復合設置。

Windows.Storage.ApplicationDataCompositeValue composite = new Windows.Storage.ApplicationDataCompositeValue();
composite["intVal"] = 1;
composite["strVal"] = "string";
roamingSettings.Values["exampleCompositeSetting"] = composite;

使用ApplicationDataContainer.CreateContainer 方法可創建設置容器。

Windows.Storage.ApplicationDataContainer container = 
   roamingSettings.CreateContainer("exampleContainer", Windows.Storage.ApplicationDataCreateDisposition.Always);
if (roamingSettings.Containers.ContainsKey("exampleContainer"))
{
   roamingSettings.Containers["exampleContainer"].Values["exampleSetting"] = "Hello World";
}

4.從設置中獲取數據。

獲取簡單的數據。

Object value = roamingSettings.Values["exampleSetting"];

獲取複合設置中的數據。

Windows.Storage.ApplicationDataCompositeValue composite = 
   (Windows.Storage.ApplicationDataCompositeValue)roamingSettings.Values["exampleCompositeSetting"];
if (composite == null)
{
   // No data
}
else
{
   // Access data in composite["intVal"] and composite["strVal"]
}

獲取容器中的數據。

bool hasContainer = roamingSettings.Containers.ContainsKey("exampleContainer");
bool hasSetting = false;
if (hasContainer)
{
   hasSetting = roamingSettings.Containers["exampleContainer"].Values.ContainsKey("exampleSetting");
}

5.從設置中刪除數據。

使用ApplicationDataContainerSettings.Remove方法刪除設置中數據。

roamingSettings.Values.Remove("exampleSetting");

6.將數據寫入文件。

Windows.Storage.StorageFolder.CreateFileAsyncWindows.Storage.FileIO.WriteTextAsync可在漫遊應用數據存儲中創建和更新文件。

async void WriteTimestamp()
{
   Windows.Globalization.DateTimeFormatting.DateTimeFormatter formatter = 
       new Windows.Globalization.DatetimeFormatting.DateTimeFormatter("longtime");
   StorageFile sampleFile = await roamingFolder.CreateFileAsync("dataFile.txt", 
       CreateCollisionOption.ReplaceExisting);
   await FileIO.WriteTextAsync(sampleFile, formatter.Format(DateTime.Now));
}

7.從文件中獲取數據。

使用Windows.Storage.StorageFolder.GetFileAsyncWindows.Storage.StorageFile.GetFileFromApplicationUriAsyncWindows.Storage.FileIO.ReadTextAsync可在漫遊應用數據存儲中打開和讀取文件。

async void ReadTimestamp()
{
   try
   {
      StorageFile sampleFile = await roamingFolder.GetFileAsync("dataFile.txt");
      String timestamp = await FileIO.ReadTextAsync(sampleFile);
      // Data is contained in timestamp
   }
   catch (Exception)
   {
      // Timestamp not found
   }
}

構建漫遊應用數據最佳實踐

應做事項:

1.將漫遊用於首選項和自定義項。用戶總會選擇在每臺設備上設置的所有應用漫遊數據,例如用戶首選項,可包括:最喜愛的球隊、背景顏色自定義等等。

2.使用漫遊數據允許用戶跨設備繼續執行任務。例如:閱讀文章時的上一次閱讀位置、遊戲中級別或分數信息等等。

禁止事項:

1.請勿將漫遊用於屬於本地設備的信息。

例如,PC 中本地文件資源的路徑名稱。此信息不應納入漫遊應用數據,且必須保留作爲本地設備信息。不過,你仍可決定漫遊本地信息,但前提是萬一此信息在另一設備上無效,應用應能夠完美恢復此信息。

2.請勿使用漫遊移動大的數據集

每個應用可以漫遊的應用數據的大小存在限制。若應用達到此限制上限,則數據無法漫遊,直到應用的總漫遊應用數據再次小於該限制。因此最好的做法是將漫遊侷限於用戶首選項、鏈接和小數據文件。應用設計過程中,必須考慮如何爲較大數據設置一個限制以免超過此限值,這一點至關重要。

例如,如果每保存一個遊戲狀態需要 10KB,則應用可能僅允許用戶最多儲存 10 個遊戲。

3.請勿將漫遊用於即時同步,或用於更改頻繁的信息

Windows會隨機漫遊應用數據,不會保證即時同步。

若用戶脫機或位於高延遲網絡中,則漫遊可能會明顯延遲,所以請不要構建需要即時同步的UI。

如果應用頻繁更改信息(例如,歌曲或電影中的最新位置),則請不要將漫遊應用數據用於此數據,而選取較不頻繁但仍可提供良好用戶體驗的表示。

例如,當前播放的歌曲、當前播放的電影章節等。

對於時間關鍵的重要設置,可使用優先級特別高的設置單位提供更爲頻繁的更新。

更多關於漫遊應用數據的介紹可參考:

1.快速入門:漫遊應用程序數據

2.漫遊應用數據指南;

3.管理應用程序數據;

MSDN中提供漫遊應用數據相關示例代碼:Application data sample

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章