4項事件——Launching,Closing,Deactivated,Activated
Windows Phone 7應用程序的運行中有4項事件需要開發者處理,以保證應用應用程序在整個生命周期中一致的用戶體驗。這四個事件是Launching(啟動),Closing(結束),Deactivated(暫停),Activated(激活)。他們都是PhoneApplicationService類的成員。
Launching(啟動)
當用戶單擊手機應用列表里的應用圖標,或者單擊開始頁面里的應用程序方磚圖標,一個應用程序就被啟動了。或者當用戶單擊屏幕上方的彈出式通知條時,發出該通知的應用程序也會被啟動。無論用戶使用上述何種方式啟動應用程序,操作系統在創建應用程序實例的同時都會觸發Launching事件。
處理Launching事件時,開發者不應該從獨立外存讀取所有永久數據,否則會讓用戶不滿,因為系統在處理完這個事件之后才在屏幕上顯示應用程序首頁,而且裝載永久數據耗費時間較長。合理的方法是在應用程序啟動時只讀取顯示首頁用到的永久數據,待應用程序啟動后以異步方式裝載其他永久數據。
處理Launching事件時,開發者不應該恢復應用程序過去實例的瞬時狀態。每應用程序一旦被啟動,用戶的體驗應該是一個從頭開始的實例。
當Launching事件被處理后,應用程序進入運行狀態。開發者應該在應用程序的執行中抓住恰當時機,以增量方式進行存取永久數據,以便改善用戶體驗。即使永久數據量很小,應用程序也應該盡量避免在其系統狀態改變時一次性集中存取永久數據。
Closing(結束)
運行中的應用程序可能觸發什么事件完全由用戶的操作決定。一旦用戶單擊退回鍵若干次,并翻過了應用程序的首頁,Closing事件就被觸發,此時應用程序將被終止。
處理Closing事件時,開發者應該把所有的永久數據保存到獨立外存。
處理Closing事件時,開發者沒有必要保存當前實例的瞬間狀態,也就是那些只和本次運行相關的信息。因為當用戶再次啟動應用程序并打開首頁時,他體驗到的應該是一個從新運行的實例。
Deactivated(暫停)
運行中的應用程序一旦被另一個應用程序替代并退出系統前臺,Deactivated事件就被觸發,此時應用程序被暫停。多種操作能夠引起應用程序暫停。當用戶單擊開始鍵,或當用戶使用啟動器和選擇器和系統幫助,或當用戶長時間沒有操作,手機超時自動鎖屏都會使當前應用程序被暫停。不同于Closing事件所對應的應用程序被完全終止,Deactivated事件所對應的應用程序被系統雪藏。這意味著雖然應用程序不再運行,但是其運行狀態被操作系統完全保存。這樣就使用戶可以返回一個被雪藏的應用程序,而且返回時的狀態跟雪藏前完全一樣,就像應用程序根本沒有暫停過一樣。
處理Deactivated事件時,開發者應該將應用程序的當前瞬間狀態完全保存到PhoneApplicationService類的State屬性里。在必要時恢復這些瞬間狀態,應用程序就能從雪藏狀態復蘇。
處理Deactivated事件時,開發者應該將應用程序的永久用戶數據保存到獨立外存。否則當被暫停的應用程序不再被激活而被重新啟動時,永久數據會被丟失。
處理Deactivated事件的所有操作必須在10秒鐘內完成,否則操作系統會終止應用程序。由于這個緣故,對于存取大量永久數據的應用程序,開發者必須在運行過程中隨時對其進行增量保存。計算機基礎知識
處理Deactivated事件時,開發者不應該對應用程序做任何破壞性操作,因為一個被暫停的應用程序隨時可能在雪藏過程中就復蘇了,比如用戶快速地連續單擊開始和退回鍵。
Activated(激活)
當一個應用程序被暫停和雪藏后,這個應用程序可能再也不被激活。這可能是因為用戶從首頁啟動一個應用程序的新實例,也可能因為用戶又啟動和雪藏了過多的其他應用程序,以至最早被雪藏的應用程序超過了應用程序堆棧的容量極限而被丟失。
通常情況下,一個應用程序被暫停和雪藏后需要被再次激活。用戶可多次單擊退回鍵回到雪藏的應用程序。當造成應用程序暫停的啟動器和選擇器運行完畢,或者被用戶取消,用戶也會回到雪藏的應用程序。當用戶返回雪藏的應用程序,這個應用程序就被激活了,Activated事件將會被觸發。
處理Activated事件時,開發者應該從PhoneApplicationService類的State屬性中讀取程序雪藏前的瞬間狀態信息,從而完全恢復到雪藏前的狀態。
處理Activated事件時,開發者不應該從獨立外存讀取所有永久數據。這和處理Launching事件時不應該存取永久數據是一個道理,目的是避免讓用戶長時間等待應用程序啟動。
上一條:因插槽引起的內置調制解調器故障
下一條:高檔CPU的保養