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是什么意思。它应该可以工作,并且数据应该在两个状态之间保持不变:。但我很高兴你找到了解决办法。