【Win 10 應用開發】應用開機前

來源:互聯網
上載者:User

標籤:內容   rri   產生   arguments   current   content   如何   就會   還原   

所謂開機前,其實你一看那名字就知道是啥意思了,這是直接譯,也找不到比這個叫法更簡練的詞了。在系統資源允許的情況下(比如電池電量充足,有足夠的記憶體空間),系統會把使用者常用的應用程式在後台啟動,但不會顯示使用者介面。在開機前時,可以事先初始化一些資料,等到使用者正式啟動應用時,呈現介面的效率就有所提升。

開機前的時候,應用程式仍然會調用 OnLaunched 方法的,在 OnLaunched 方法調用之後,會馬上發生 Suspending 事件,隨後應用就會暫停。

當使用者正式啟動應用時,同樣也會調用 OnLaunched 方法,那麼,如何知道應用程式是正式啟動還是開機前呢。OnLaunched 方法的參數有一個 PrelaunchActivated 屬性,布爾類型,如果這個屬性為真,說明當前調用是開機前;否則就是正式啟動。因此,在處理 OnLaunched 方法時,只要判斷這個屬性就可以了,當它為false時,才去建立使用者介面。

 

應用項目預設產生的模板代碼是這樣的:

        protected override void OnLaunched(LaunchActivatedEventArgs e)        {            Frame rootFrame = Window.Current.Content as Frame;            // 不要在視窗已包含內容時重複應用程式初始化,            // 只需確保視窗處於活動狀態            if (rootFrame == null)            {                // 建立要充當導航內容相關的架構,並導航到第一頁                rootFrame = new Frame();                rootFrame.NavigationFailed += OnNavigationFailed;                // 將架構放在當前視窗中                Window.Current.Content = rootFrame;            }            if (e.PrelaunchActivated == false)            {                if (rootFrame.Content == null)                {                    // 當導航堆棧尚未還原時,導航到第一頁,                    // 並通過將所需資訊作為導航參數傳入來配置                    // 參數                    rootFrame.Navigate(typeof(MainPage), e.Arguments);                }                // 確保當前視窗處於活動狀態                Window.Current.Activate();            }        }

 它是先執行個體化作為UI根的 Frame 對象,然後再判斷它是否為開機前,如果不是,就導航到首頁面。

 

我們可以乾脆這樣修改:

        protected override void OnLaunched(LaunchActivatedEventArgs e)        {            if (!e.PrelaunchActivated)            {                Frame rootVisual = Window.Current.Content as Frame;                if (rootVisual == null)                {                    rootVisual = new Frame();                    Window.Current.Content = rootVisual;                }                if (rootVisual.Content == null)                {                    rootVisual.Navigate(typeof(MainPage), e.Arguments);                }                Window.Current.Activate();            }        }

反正不建立UI了,弄個 Frame 在那裡也沒什麼毛用,不如直接等到正式啟動時再建立 Frame 。

 

OK,現在大伙兒都知道怎麼判斷開機前了,那麼,我如果要調試開機前,該做啥。要對開機前進行調試,不要直接運行調試,因為直接運行是進入正式啟動方式,而不是開機前。

正確的操作是:依次執行菜單【調試】-【調試其他目標】-【調試通用 Windows 應用開機前】,然後就會執行 OnLaunched 方法,而 PrelaunchActivated 屬性就能返回 true。

 

 在調試的時候,應用不會引發 Suspending 事件,你可以通過【調試位置】工具列控制應用進入 Suspend 狀態。

好了,本文內容實在太簡單了,為了節約時間,此處省略 310 個字…… 本文結束。

 

【Win 10 應用開發】應用開機前

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.