启动应用程序的新鲜实例,防止墓碑

时间:2011-11-24 05:04:57

标签: c# windows-phone-7 silverlight-4.0

我开发了一款在Windows手机上正常运行的应用。应用程序的本质是它不需要支持墓碑。也就是说,每次都可以启动一个新实例。

问题是如何防止我的应用程序出现墓碑?例如,如果用户在应用程序中单击开始按钮,我需要终止应用程序,这样当他回击键时,应用程序将以新的实例启动。

任何帮助将不胜感激! :)

2 个答案:

答案 0 :(得分:1)

在每个页面中你有OnNavigatedTo(或者你可以覆盖PhoneApplicationPage)只需设置一个变量,每个页面检查返回到原始页面。从那里,您可以重新启动,就像它是开始一样。

如果函数名称不是100%,请道歉,在没有Visual Studio可用的情况下输入。

一些逻辑...... 在App.xaml.cs中

public static bool Activated = false;

ApplicationActivated()
{
  Activated = true;
}
每页

 public override void OnNavigatedTo(object sender, NavigationEventArgs e)
    {
       base.OnNavigatedTo(sender,e);
        if (App.Activated)
              if (NavigationService.CanGoBack){
                     NavigationService.GoBack();
                     return; //remember that GoBack() is async and will not cause this function to end early! you must return

              }
              else { App.Activated = false; } 

        }

    }

答案 1 :(得分:1)

您应该能够从Application_Activated事件中执行此操作。在preMango中,你通常会做这样的事情:

    private void Application_Activated(object sender, ActivatedEventArgs e) 
    { 
        var state = PhoneApplicationService.Current.State; 
        if (state.ContainsKey("YourKeyName")) 
        { 
            // Typically rehydrate. Clear app state
        } 
    }

在Mango中,您可能还需要使用IsApplicationInstancePreserved属性。此属性指示何时为您保留数据,并且您不需要加载它。请参阅http://msdn.microsoft.com/en-us/library/microsoft.phone.shell.activatedeventargs.isapplicationinstancepreserved(v=vs.92).aspx

所以你需要添加这样的东西:

if (e.IsApplicationInstancePreserved) 
   {
       // Clear State
   }