는 Technical certification requirements for Windows Phone에 따르면, 유일한 요구 사항은 다음과 같습니다
윈도우 폰 응용 프로그램은 사용자가 시작 버튼을 누를 때 비활성화 또는 장치 타임 아웃이 발생하는 경우 잠금 화면이 참여. Launcher 또는 Chooser API를 호출하여 Windows Phone 앱도 비활성화됩니다.
Windows Phone OS 7.0 앱은 비활성화 될 때 삭제 표시 (종료)됩니다. Windows Phone OS 7.1 이상의 응용 프로그램은 비활성화되었을 때 휴면 상태가되지만 리소스 사용 정책으로 삭제 표시가 나타나면 시스템에서 종료 될 수 있습니다.
해지 후 활성화되면 앱이 섹션 5.2.1 - 시작 시간의 요구 사항을 충족해야합니다.
섹션 5.2.1 - "시작 시간"은 시작 성능 및 응답성에 만 관련되므로 문제에 대한 인증 요구 사항이 없습니다.
그러나 사용자가 데이터를 입력하고 (이미지 첨부 등) 전화를 받았다고 가정하면 다른 물건을 가져 와서 응용 프로그램으로 돌아가서 입력 한 데이터가 손실되었습니다. 그것을 고맙게 생각하지 마라. 그러면 결함/버그와 같이 보일 것입니다.
주 (state)의 직렬화와 관련하여 Json, Xml 또는 다른 형식을 사용할 때보 다 성능이 10 배 이상 우수하므로 이진 직렬화를 사용하는 것이 좋습니다. ,
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);
}
}
}
OK :
는 개인적으로, 나는 "상태"관련 클래스에 사용자 정의 인터페이스, IBinarySerializable를 구현하고 직렬화 코드를 작성하는 데 도움이 BinaryWriter 확장 클래스를 사용 따라서 인증을 통과해야하는 것은 아닙니다. 나는 앱을 게시하면서 크게 서두 르며, 나는이 문제를 업데이트로 해결할 것이다. –