Windows phone 8 在逻辑删除出现时将变量存储在中
如何将变量存储在Windows phone 8 在逻辑删除出现时将变量存储在中,windows-phone-8,Windows Phone 8,如何将变量存储在TombstoneHelper类的savestate()方法中,以避免在windows phone 8中出现Tombstone。我认为您可以尝试使用PhoneApplicationService.State属性-它的工作原理类似于字典(字符串、对象) 要在停用事件时保存,请执行以下操作: private void Application_Deactivated(object sender, DeactivatedEventArgs e) { int myObject =
TombstoneHelper
类的savestate()方法中,以避免在windows phone 8中出现Tombstone。我认为您可以尝试使用PhoneApplicationService.State属性-它的工作原理类似于字典(字符串、对象)要在停用事件时保存,请执行以下操作:
private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
int myObject = 5;
PhoneApplicationService.Current.State.Add("myName", myObject);
}
要在激活事件时恢复,请执行以下操作:
private void Application_Activated(object sender, ActivatedEventArgs e)
{
var returnedOnject = PhoneApplicationService.Current.State["myName"];
}
感谢Man+1对Romasz的评论。它现在正在工作,但当应用程序进入tombstone阶段时出现错误,因为当您的应用程序来自tombstone阶段时,PhoneApplicationService状态为null。因此,我将该phoneState存储在application_Disactivated中的独立存储中,并从application_activated中的独立存储中检索。 我制作了一个简单的LoginData类,可以在其中存储我必须保存的数据
[DataContract]
public class LoginData
{
[DataMember]
public string Username { get; set; }
[DataMember]
public string Password { get; set; }
[DataMember]
public int EstablishmentId { get; set; }
[DataMember]
public bool chainmanager { get; set; }
[DataMember]
public string logoimage { get; set; }
public LoginData(string username, string password, int establishmentId, bool ischainmager,string logoimage)
{
this.Username = username;
this.Password = password;
this.EstablishmentId = establishmentId;
this.chainmanager = ischainmager;
this.logoimage = logoimage;
}
}
然后使方法保存app.xml中的类对象
public void save(LoginData ld)
{
PhoneApplicationService phonestate = PhoneApplicationService.Current;
phonestate.State["_lOGINcREDENTIALs_"]= ld;
var settings = IsolatedStorageSettings.ApplicationSettings;
settings["Credatials"] = phonestate.State["_lOGINcREDENTIALs_"];
}
和方法来加载类对象
public void load()
{
PhoneApplicationService phonestate = PhoneApplicationService.Current;
var settings = IsolatedStorageSettings.ApplicationSettings;
object credentials;
if (settings.TryGetValue("Credatials", out credentials))
{
phonestate.State["_lOGINcREDENTIALs_"]= credentials;
}
}
并在各种事件中调用这些方法,如
private void Application_Launching(object sender, LaunchingEventArgs e)
{
load();
}
private void Application_Activated(object sender, ActivatedEventArgs e)
{
load();
}
private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
save();
}
private void Application_Closing(object sender, ClosingEventArgs e)
{
save();
}
告诉我减号的原因。可能是因为你没有展示到目前为止你已经尝试过的东西,也没有给出关于什么样的类
TombstoneHelper
的线索。我不得不在谷歌上找到它是一个CodePlex
项目。如何写出完美的问题:我不知道butTombstone是Windows Phone中常见的问题,而且每个Windows开发人员都知道“什么是”TombstoneHelper“因为它是墓碑的最佳解决方案。让na karto minusWell,代码是正确的,但在修正代码后,它在中的变量中给出了null值-现在它应该在ActivationEvent时返回5。我不理解PhoneApplicationService中的null是什么意思。它应该可以工作,并且数据应该在两个状态之间保持不变:。但我很高兴你找到了解决办法。