Windows Phone 7 教程 - 如何退出程序

openkk 12年前發布 | 41K 次閱讀 Windows Phone開發 移動開發 Windows Phone

在WPF程序中,你可以調用“App.Exit()”,你的程序就終止了。但是在 WP7 上面就沒那么簡單了,因為沒有 Exit() 方法。

如果你拋出一個未被處理的異常,你的程序將被終止
Windows Phone 7 教程 - 如何退出程序
但是這個技術將不能通過認證。我這里提到它是想說它曾經是可行的。還有一個方法:
Windows Phone 7 教程 - 如何退出程序
在上面的代碼中,我們首先清空回退堆棧。回退堆棧是針對你的程序的。它包含了所有自從你調用 NavigationService 的 Navigate 方法。清空回退堆棧可以保證在你按回退按鈕的時候退出你的程序。

這里的問題是,調用“base.OnBackKeyPress()”不起作用。所以你的退出程序只是清空了回退堆棧,但是沒有退出程序。

下面的代碼將解決問題
Windows Phone 7 教程 - 如何退出程序
在上面的代碼中,我們在不能回退的情況下回退。在這種情況下 CanGoBack 屬性是false。當 CanGoBack 屬性是false的時候調用 GoBack 方法會拋出未被處理的異常。任何未被處理的異常將導致程序退出。

為什么要這么做?
這看起來和直接拋出異常沒有什么區別但是我覺得這個方法有價值是因為也許某天沒有處理的“throw”語句將不能通過認證。在我看來這個方法有可能成為將來 Exit() 的實現。

這原本就是個錯誤!因為WP7的程序就不應該退出,除非是硬件關機。整個框架就沒有 Exit 的實現。

來自微軟的解釋如下:

  1. 技術認證要求不支持未被處理的異常。
  2. Exit() 是從別的移動操作系統中延續下來的。
  3. Exit() 不屬于這個平臺,我們應該跟隨最新的模式。
  4. 所有需要 Exit() 地方都可以用別的方法替代
這里有一個完美的替代方案:
Windows Phone 7 教程 - 如何退出程序
在上面的代碼中,我們依然清楚了回退堆棧,這是為了保證用戶點擊回退按鈕時無效。然后我們禁用了所有東西 - IsHitTest 阻止了所有觸摸事件,然后我們禁用了所有的按鈕。

這個替代方法應該能讓你獲得 Exit() 同等的效果。

總結:也許將來我們會有 Exit 方法。但是現在沒有。也就是說你的應用不應該退出。

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!