2013-10-22 155 views
2

如果我需要真正做快速切換的任何事情,我有點困惑。看起來如果我不使用媒體元素,相機和插座,我可以免費獲得這種「快速切換」。快速切換Windows Phone(7.8)

我不知道如何測試它。我看到

  1. 點擊Windows圖標(啓動圖標)一對夫婦的視頻
  2. 點擊後退按鈕

  1. 按住返回鍵,直到你在屏幕查看
  2. 轉到其他應用程序
  3. 回到您的應用程序。

這些都似乎加載速度又快,但如何。

  1. 最多可以裝入應用程序
  2. 命中Windows圖標
  3. 點擊瓷磚應用

應該快速切換髮生在這一點上還是它加載的應用程序在殺死你的舊的新實例?

回答

3

有不同的概念,這裏涉及:

-the第一件事就是快速應用恢復它是Windows的一個新功能手機8,你可以啓用,這樣當你按下應用拼貼它沒有重新啓動應用程序,但保持相同的實例(默認情況下,它只會殺死應用程序,只是重新創建一個新的實例,就好像應用程序從未打開過)。你可以找到更多關於那個here的信息。

- 第二個概念是快速應用切換和墓碑。您可以找到有關應用程序生命週期here的更多信息。基本上,當你按下Windows按鈕或導航到另一個應用程序時,你的應用程序將進入休眠狀態。在此狀態下,應用程序未運行,但仍在內存中。當你回去時,因爲一切都在記憶中,所以一切都應該保持原樣。在快速應用切換的情況下處理的主要情況是,當您的應用停用時,所有的網絡連接都會被終止,因此您應該確保當您返回時不顯示任何Web錯誤消息對話框,並且您重做任何失敗的網絡請求。

您的應用程序的第二種可能狀態是,應用程序處於休眠狀態後,您打開了幾個應用程序,並且該設備沒有足夠的內存,那麼它將選擇邏輯刪除您的應用程序。在該狀態下,您的應用程序將從內存中刪除,因此您沒有保存的任何內容都將丟失。當你回到你的應用程序時,它會回到用戶以前的頁面並重新創建它。
這意味着處理程序之前,這種情況下,關閉你應該有:

  • 保存您可能沒有被路過的導航參數任何上下文特定的數據。
  • 也許保存用戶目前正在做的事情(例如,如果他當前正在輸入一個長文本,最好保存它以便用戶不必從頭開始重新輸入)
  • 保存當前滾動位置或類似選定項目的東西可能是一個加號

此外,當應用程序恢復時,您必須確保您重新查詢所需的所有信息。如果您在主頁面的OnNavigatedTo中加載一些數據(例如來自Web服務器),然後僅在詳細信息頁面上重新使用數據而不重新查詢它,則會中斷一個示例。如果你在詳細信息頁面,按開始按鈕,然後做一些其他的應用程序tombstonne,當你回到應用程序比數據將無法使用(因爲內存已被「清除」和onNavigatedTo的主頁沒有被調用,因爲它會直接導航回到詳細頁面)。

您可以使用page state and application state來保存正確處理墓碑案例所需的任何信息。基本上有一些字典可以添加一些將被序列化的對象(所以你需要確保你試圖保存的任何對象都是可序列化的),當應用程序被停用時會自動進行序列化。

要輕鬆測試Tombtonning案例,您可以在項目屬性中的Debug選項卡中選中複選框「在調試時取消激活時爲Tombstone」。像這樣,當你調試並按下windows按鈕或轉到另一個應用程序時,它總是會將應用程序劃掉。要檢查它是否真的是墓碑,當您返回時,您應該會看到您的應用程序顯示了幾秒鐘的恢復屏幕(而在墓碑案中,它幾乎是瞬間的)。

0

所以這有點令人困惑。我永遠花了我的時間來弄清楚他們真正的意思。

什麼快速切換參考是更復雜的應用程序。利用某些需要保存狀態的應用程序。

例如,如果您要創建導航應用程序。您正在瀏覽,然後離開應用程序。當你回到那個應用程序時,它應該顯示「恢復...」指示器,然後將你的應用程序恢復到之前的狀態。

這裏是FAS

頻道9視頻

http://channel9.msdn.com/events/MIX/MIX11/DVC09

而且,這裏是關於MSDN文章吧

http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff967547(v=vs.105).aspx

0

應該快速切換,在這一點上發生或者它加載你的應用程序的新實例,以殺死你的舊的?

在這種情況下,您的新實例將啓動。

其實,它有點混亂,但不是那麼多。

  • 應用程序可以關閉(通過Windows鍵或按BAck鍵一段時間)或退出(通過按主菜單中的返回鍵)。接下來,應用程序進入休眠狀態,它將所有內容保存在內存中。 ApplicationDeactivated會上升。
  • 因此,如果您只是重新激活它(通過按Back(後退)並選擇您的應用程序,或者只按Back(後退),如果堆棧中沒有其他東西),它將被恢復。 ApplicationActivated事件將會隨着e.IsApplicationInstancePreserved = true而上升
  • 如果您要使用很多其他應用程序(設備將耗盡內存),則您的應用程序將進入墓碑狀態。然後,您需要恢復所有數據。 e.IsApplicationInstancePreserved將爲false。
  • 如果您要重新啓動應用程序(通過單擊平鋪),將啓動新實例,並且ApplicationLaunching將會升高。
+0

這正是FAS設計用於防止的原因。 –

+0

例如打開諾基亞在這裏驅動器,然後選擇一個位置,然後開始導航。現在點擊主頁按鈕。現在點擊平鋪並打開應用程序。諾基亞在這裏驅動器不重新啓動。它使用墓碑狀態FAS或快速應用程序切換回你的應用 –

+0

啊,好的,對不起,它的wp8功能我只用wp7 –

0

作爲開發人員,快速切換並不是真正令您擔心的事情。您需要擔心的是「墓碑式」 - 當有人從您的應用程序切換開始時,您需要保存狀態:當用戶切換回它時,作爲開發人員必須假定您的應用程序實際上是從頭開始重新啓動的並需要重新加載保存狀態。這是Application_LaunchingApplication_Activated(用戶從開始屏幕重新開始您的應用程序,而應用程序被暫停,現在正在恢復,但從頭開始)之間的差異。

在早些時候,這是應用程序切換工作的唯一方式。快速應用程序切換稍後添加,只是簡單地更改了合同,以便有時您的應用程序可以在沒有被邏輯刪除的情況下繼續執行。它取決於內存等,但這對用戶來說只是一個好處,在很多情況下,用戶不再需要等待應用程序重新加載其邏輯狀態。作爲開發者,你仍然不得不假定你會被斬首。

+0

好的,在我想要特別說明的挑戰中的一些要求必須具有「快速切換」,但是在我的研究之後,它似乎是自動的,所以我感到困惑。在墓碑式的情況下,您如何處理多個頁面(用戶可能處於第5頁,並且狀態需要恢復,另一個頁面可能在第2頁並需要恢復)。一切都是用這種方法處理的嗎?另外如果你使用MVVM如何工作(這可能是一個單獨的問題)。 – chobo2

+0

操作系統將重新加載用戶停止的任何頁面。如果他們離開時,應用程序將在第5頁加載。有關詳細信息,請參閱此處:http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff967548.aspx –

+0

即使它被砸死,它也會立即加載構造函數? – chobo2