【WP開發】正確理解頁面緩存

注:本文內容面向Runtime App。
在新建項目後,細心觀察,你會發如今App類中有如下代碼:

                // TODO: 將此值更改成適合您的應用程序的緩存大小                rootFrame.CacheSize = 1;html

這行代碼放在了OnLaunched方法中,CacheSize是Frame類的一個公共屬性。
咱們知道,Frame類負責完成頁面之間的導航,它自己就是一個容器控件。CacheSize屬性用於告訴Frame對象,要緩存的頁面數量。近日,有人提問說,這個緩存頁面數是否是導航記錄的數量?
明確地告訴你:非也。
Frame的導航記錄在BackStack屬性中,這個Cache並非用來緩存頁面的導航記錄的,必定要注意啊,不要搞混了。
CacheSize屬性是用於設置要保留頁面實例的個數。當Frame導航到某個頁面時,一般狀況下,是要調用頁面的構造函數來建立某頁的新實例的。即,不論你是向前導航仍是向後導航,只要導航到某頁,某頁都會從新實例化。所以,就能夠理解爲何Frame類用於導航的Navigate方法要這樣定義了:

public bool Navigate(System.Type sourcePageType)緩存

這與Silverlight中的導航不一樣,SL中是傳遞URI的,而這裏是傳遞頁面類的Type,就由於獲得某個頁面類的Type,纔會在導航是new一個實例出來。
感受很抽象嗎?沒事,示例是無敵學習利器,還猶豫什麼,動手。
一、啓動VS,新建一個」空白應用程序(Windows Phone)「項目。聽說MS會統一全部平臺的命名,固然這是須要的,也是蓋茨的夢想。無論叫什麼,系統仍是同樣的,只是叫法不一樣罷了。
二、在App類中,找到OnLaunch方法,把CaheSize改成0。

rootFrame.CacheSize = 0;函數

三、把項目默認生成的MainPage.xaml刪掉,由於它的存在,嚴重影響示例的演示,爲何? 待會兒再告訴你。
四、向項目中添加三個空白頁,這個會了吧? 不會的話,就按Ctrl + Shift + A,試試。
五、三個頁面的結構差很少,因此這裏我只說第一個頁面。XAML代碼以下:
 
相關文章
相關標籤/搜索