2013-02-25 39 views
0

我有一個頁面,用戶可以在其中輸入他的名字並附上圖像。從墓碑歸來時的應用認證要求

從墓碑狀態返回時,我的應用程序是否強制還原圖像?

  1. 是否是應用程序認證要求,沒有這個要求,我的應用程序不會通過認證?或者它是推薦的模式?

  2. 同樣的問題,當我有一個主要的例子,是否強制保存所選數據透視表的索引,並恢復從墓碑激活時的選擇?

沒必要: 是否有一個通俗圖書館\框架來幫助我,立碑和序列化對象,圖像等?

回答

0

按照Technical certification requirements for Windows Phone,唯一的要求是:當用戶按下開始按鈕或

一個Windows Phone應用程序被關閉,如果該設備超時導致鎖屏搞。 Windows Phone應用程序也會停用,並調用Launcher或Chooser API。

Windows Phone OS 7.0應用程序在停用時被邏輯刪除(終止)。 Windows Phone OS 7.1或更高版本的應用程序在停用時會變爲休眠狀態,但在資源使用策略導致邏輯刪除時可以由系統終止。

當終止後激活時,應用程序必須符合第5.2.1節 - 啓動時間的要求。

由於第5.2.1節「啓動時間」僅涉及啓動性能和響應能力,因此您沒有針對問題的認證要求。但是,如果用戶輸入數據(附加圖像等),並假設它接聽電話,做了其他一些事情並回到應用程序,然後他輸入的數據丟失了......它肯定會贏得不欣賞它。這看起來更像是缺陷/錯誤。

關於您的狀態的序列化,我建議您使用二進制序列化,因爲性能至少比使用Json,Xml或任何其他格式高10倍。

就個人而言,我實現一個自定義界面,IBinarySerializable我的 「狀態」 相關的類和使用的BinaryWriter擴展類來幫助編寫序列化代碼:


using System.IO; 

namespace MyCompany.Utilities 
{ 
    public interface IBinarySerializable 
    { 
     void Write(BinaryWriter writer); 
     void Read(BinaryReader reader); 
    } 
} 

using System; 
using System.Collections.Generic; 
using System.IO; 

namespace MyCompany.Utilities 
{ 
    public static class BinaryWriterExtensions 
    { 
     public static void Write<T>(this BinaryWriter writer, T value) where T : IBinarySerializable 
     { 
      if (value == null) 
      { 
       writer.Write(false); 
       return; 
      } 

      writer.Write(true); 
      value.Write(writer); 
     } 

     public static T Read<T>(this BinaryReader reader) where T : IBinarySerializable, new() 
     { 
      if (reader.ReadBoolean()) 
      { 
       T result = new T(); 
       result.Read(reader); 
       return result; 
      } 

      return default(T); 
     } 

     public static void WriteList<T>(this BinaryWriter writer, IList<T> list) where T : IBinarySerializable 
     { 
      if (list == null) 
      { 
       writer.Write(false); 
       return; 
      } 

      writer.Write(true); 
      writer.Write(list.Count); 
      foreach (T item in list) 
      { 
       item.Write(writer); 
      } 
     } 

     public static List<T> ReadList<T>(this BinaryReader reader) where T : IBinarySerializable, new() 
     { 
      bool hasValue = reader.ReadBoolean(); 
      if (hasValue) 
      { 
       int count = reader.ReadInt32(); 
       List<T> list = new List<T>(count); 
       if (count > 0) 
       { 
        for (int i = 0; i < count; i++) 
        { 
         T item = new T(); 
         item.Read(reader); 
         list.Add(item); 
        } 
        return list; 
       } 
      } 

      return null; 
     } 

     public static void WriteListOfString(this BinaryWriter writer, IList<string> list) 
     { 
      if (list == null) 
      { 
       writer.Write(false); 
       return; 
      } 

      writer.Write(true); 
      writer.Write(list.Count); 
      foreach (string item in list) 
      { 
       writer.WriteSafeString(item); 
      } 
     } 

     public static List<string> ReadListOfString(this BinaryReader reader) 
     { 
      bool hasValue = reader.ReadBoolean(); 
      if (hasValue) 
      { 
       int count = reader.ReadInt32(); 
       List<string> list = new List<string>(count); 

       if (count > 0) 
       { 
        for (int i = 0; i < count; i++) 
        { 
         list.Add(reader.ReadSafeString()); 
        } 
        return list; 
       } 
      } 

      return null; 
     } 

     public static void WriteSafeString(this BinaryWriter writer, string value) 
     { 
      if (value == null) 
      { 
       writer.Write(false); 
       return; 
      } 

      writer.Write(true); 
      writer.Write(value); 
     } 

     public static string ReadSafeString(this BinaryReader reader) 
     { 
      bool hasValue = reader.ReadBoolean(); 
      if (hasValue) 
       return reader.ReadString(); 

      return null; 
     } 

     public static void WriteDateTime(this BinaryWriter writer, DateTime value) 
     { 
      writer.Write(value.Ticks); 
     } 

     public static DateTime ReadDateTime(this BinaryReader reader) 
     { 
      var int64 = reader.ReadInt64(); 
      return new DateTime(int64); 
     } 
    } 
} 
+0

OK,所以這不是通過認證的要求。我非常着急發佈應用程序,我會在更新中解決問題。 – 2013-02-25 16:44:19