Metro App生命周期之概述

jopen 12年前發布 | 20K 次閱讀 Metro .NET開發

Metro App和傳統的Desktop App雖然可以共存于Windows8中,但Metro App本身卻是為Touch設備而生的。所以不管是其UE風格還是技術架構其實都跟傳統的App存在很大差異。本文會概要性的介紹一下Metro App的生命周期有哪些狀態,當然后續還會跟進其他一些文章來詳細討論生命周期中的各種狀態以及相關程序中的一些細節。

先看一張圖:
Metro App生命周期之概述
其實在《【windows8開發】javascript開發Metro風格App》 一文中曾經介紹過Metro App的生命周期,只是當時說明的內容比較簡單。

從圖中可以看出,Metro程序主要存在三個狀態:Not Running,Running,Suspended。


1. 程序啟動

用戶啟動后,程序并不是直接進入Running狀態,而是先進入NotRunning狀態,在此狀態下如果程序發生crash或被suspended,則程序會被終止,不會保留在內存中。如果初始化正常,則程序會進入Running狀態。


2. 程序掛起

由于Metro App都運行于全屏模式,當用戶從當前程序切換到其他程序時,當前程序會被suspended,停止運行,僅保留于內存中。也就是說Metro模式下前臺 僅會有一個應用處于Running狀態。這其實是考慮到節約系統資源,提高性能和用戶體驗以及節省設備能源(電量)。另外,當系統進入低電量狀態時,程序 也有可能被掛起(suspended)。


3. 恢復程序

當用戶又切換回程序或者從低電量狀態恢復回來時,相關程序會被Resume,重新進入 Running狀態。但是當程序被掛起時,系統也有可能因為需要釋放內存或者節約電量而強行終止某些被掛起的程序。而且并不會在終止程序時通過事件通知程 序。所以,一個穩定而又健全的程序應該在被suspended時持久化保存當前狀態和必要的數據,以便在被迫終止后重啟時還可以恢復之前的狀態。


4. 關閉程序

Metro程序一般不需要由用戶來關閉,可以完全交給系統來管理。當然用戶也可以通過 特定的手勢(貌似我用鼠標試了下,關不掉,郁悶)或者按Alt+F4來關閉程序。需要注意的是,不應該由應用程序中的某些代碼來終止程序,這樣系統會當做 是一次程序的Crash。同理,你也不可以在應用的UI中提供給用戶關閉程序的按鈕,此類程序應該不能通過App Store的審查。


5. 安裝與卸載

開發者不再需要為Metro App開發安裝或者卸載程序,僅需要把當前應用打包后上傳至App Store。而用戶可以直接從App Store下載到應用程序包,系統會根據根據相關信息安裝應用程序。Metro模式下程序的安裝或卸載都是對每位登錄用戶而言的,也就是說當你安裝時僅僅 是為自己這個登錄的ID安裝,其他用戶并不能共享用這個應用,卸載時也是一樣,只有所有安裝了同一應用的用戶都卸載了該應用,該應用才會從這臺設備上真正 完全刪除。


本文只是概要性的介紹一些原理,程序生命周期內各個狀態中的一些技術細節和程序實現會在這個系列的其他文章中繼續說明,感興趣的繼續關注吧,別忘了頂一下。

轉自:http://blog.csdn.net/my_business/article/details/7904065

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