2011-11-24 61 views
0

我開發了一個在windows phone上工作正常的應用程序。該應用程序的性質是這樣的,它不需要支持墓碑。也就是說,每次都可以啓動一個新的實例。開始新的應用程序的實例,防止墓碑

問題是如何防止墓碑我的應用程序?例如,如果用戶在應用程序中單擊開始按鈕,我需要終止該應用程序,以便當他點擊返回鍵時,應用程序以新實例開始。

任何幫助將不勝感激! :)

+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; } 

     } 

    } 
+0

krolth和@willmel感謝您的詳細回覆。我仍然無法找到解決我的問題。我多說一點。我有一個使用相機和調度計時器對象的單個頁面的應用程序。當我從開始菜單啓動它時,它完美地工作。當我使用開始鍵或返回鍵來終止應用程序時,我重新啓動時出現錯誤。我懷疑這是因爲操作系統試圖保存定時器和相機對象的狀態,但無法成功完成。我只需要確保應用程序每次重新開始,無論它是如何啓動的。 :) – Gowtham

+0

我找到了解決這個問題的方法!我剛剛添加了主應用程序頁面的緩衝頁面。當停用後應用程序恢復時,我使用它創建主頁面的新實例。不是很優雅。但它的作品! :)謝謝所有... – Gowtham

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 
    } 
+0

@Frazell墓碑或被置於休眠階段對我的應用程序造成嚴重破壞,我無法弄清楚如何解決它。 :( – Gowtham