2013-07-09 3 views
2

У меня есть приложение, которое отлично работает, когда я его открываю один раз, но теперь проблема в том, что пользователь нажимает на домашний ключ Windows, он выходит из приложения и переносит мое приложение на задний план. Теперь, если пользователь долгое время отжимает клавишу и открывает мое приложение, он возвращается на ту же страницу, с которой пользователь ударил домашний ключ. Но если пользователь нажимает на значок приложения, мое приложение начинается с начала, чего я не хочу. Пожалуйста, помогите мне. СпасибоКак сохранить состояние приложения в телефоне Windows

Скажите, где я должен положить код, чтобы получить желаемый результат.

Мои App.xaml ниже: =================

namespace MyProj 
{ 
    /// <summary> 
    /// Interaction logic for App.xaml 
    /// </summary> 
    public partial class App : Application 
    { 

     // Easy access to the root frame 
     public PhoneApplicationFrame RootFrame 
     { 
      get; 
      private set; 
     } 

     // Constructor 
     public App() 
     { 
      // Global handler for uncaught exceptions. 
      UnhandledException += Application_UnhandledException; 

      // Standard Silverlight initialization 
      InitializeComponent(); 

      // Phone-specific initialization 
      InitializePhoneApplication(); 


      // Show graphics profiling information while debugging. 
      if (System.Diagnostics.Debugger.IsAttached) 
      { 
       // Display the current frame rate counters. 
       Application.Current.Host.Settings.EnableFrameRateCounter = true; 

       // Show the areas of the app that are being redrawn in each frame. 
       //Application.Current.Host.Settings.EnableRedrawRegions = true; 

       // Enable non-production analysis visualization mode, 
       // which shows areas of a page that are handed off to GPU with a colored overlay. 
       //Application.Current.Host.Settings.EnableCacheVisualization = true; 

       // Disable the application idle detection by setting the UserIdleDetectionMode property of the 
       // application's PhoneApplicationService object to Disabled. 
       // Caution:- Use this under debug mode only. Application that disable user idle detection will continue to run 
       // and consume battery power when the user is not using the phone. 
       PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled; 
      } 

     } 

     // Code to execute when the application is launching (eg, from Start) 
     // This code will not execute when the application is reactivated 
     private void Application_Launching(object sender, LaunchingEventArgs e) 
     { 

     } 

     // Code to execute when the application is activated (brought to foreground) 
     // This code will not execute when the application is first launched 
     private void Application_Activated(object sender, ActivatedEventArgs e) 
     { 
      // Restart session 

     } 

     // Code to execute when the application is deactivated (sent to background) 
     // This code will not execute when the application is closing 
     private void Application_Deactivated(object sender, DeactivatedEventArgs e) 
     { 
     } 

     // Code to execute when the application is closing (eg, user hit Back) 
     // This code will not execute when the application is deactivated 
     private void Application_Closing(object sender, ClosingEventArgs e) 
     { 
      ViewModelLocator.Cleanup(); 
     } 

     // Code to execute if a navigation fails 
     private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e) 
     { 
      if (System.Diagnostics.Debugger.IsAttached) 
      { 
       // A navigation has failed; break into the debugger 
       System.Diagnostics.Debugger.Break(); 
      } 
     } 

     // Code to execute on Unhandled Exceptions 
     private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) 
     { 
      if (System.Diagnostics.Debugger.IsAttached) 
      { 
       // An unhandled exception has occurred; break into the debugger 
       System.Diagnostics.Debugger.Break(); 
      } 
     } 

     #region Phone application initialization 

     // Avoid double-initialization 
     private bool phoneApplicationInitialized = false; 

     // Do not add any additional code to this method 
     private void InitializePhoneApplication() 
     { 
      if (phoneApplicationInitialized) 
       return; 

      // Create the frame but don't set it as RootVisual yet; this allows the splash 
      // screen to remain active until the application is ready to render. 
      //RootFrame = new PhoneApplicationFrame(); 
      RootFrame = new TransitionFrame(); 
      RootFrame.Navigated += CompleteInitializePhoneApplication; 

      // Handle navigation failures 
      RootFrame.NavigationFailed += RootFrame_NavigationFailed; 

      // Ensure we don't initialize again 
      phoneApplicationInitialized = true; 
     } 

     // Do not add any additional code to this method 
     private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e) 
     { 
      // Set the root visual to allow the application to render 
      if (RootVisual != RootFrame) 
       RootVisual = RootFrame; 

      // Remove this handler since it is no longer needed 
      RootFrame.Navigated -= CompleteInitializePhoneApplication; 
     } 

     #endregion 
    } 
} 
+0

@Joe Korolewicz любой помощи по этому поводу, м действительно stucked ... спасибо – Artist404

+0

Я извиняюсь, я не работал с Windows Phone, так что я не могу быть много помощи, я был просто повторная пометка его для лучшей видимости. Если вы хотите догадаться, я бы сказал, чтобы создать другое свойство, такое как ваш 'RootFrame', который является' CurrentFrame', и всякий раз, когда вы активируете его, чтобы дать ему фокус. –

+0

Возможно, вы захотите сделать некоторые чтения на IsolStorage для сохранения материала после закрытия вашего приложения. –

ответ

1

Вам нужно реализовать функциональные возможности надгробие. Просто читать
App activation and deactivation for Windows Phone

+1

Я пробовал этот, также TomstoneHelper.dll. Но когда я реализую все, а затем запускаю свое приложение, а затем нажимаю Windows home key, а затем нажимаю appicon, мое приложение снова запускается. :( – Artist404

+1

«затем нажмите« appicon », что означает нажатие на черепицу или длинную кнопку« Назад »и выберите приложение из пула Если вы используете wp7 - когда вы нажимаете на app tile, каждое приложение запускается снова. Восстановление из tap to tile поддерживается только в wp8 – jimpanzer

+0

. О, это так, тогда вы можете помочь в решении моей проблемы, на самом деле мне нужно сохранить сеанс входа в систему так что, когда пользователь снова вернется в будущем, состояние входа в систему будет сохранено. Я использовал IsolostorageSettings для получения пользовательского файла, но ответ пользователя на вход пользователя содержит контейнер cookie, который используется для дальнейших взаимодействий, но когда я сохраняю его в изолированном хранилище, он не работает. Кроме того, cookieконтейнер содержит пустые файлы cookie, которые yim не могут понять, что происходит и что происходит. – Artist404

Смежные вопросы