最近在學windows phone 7的開發,所以抄點東西,怕忘了以後。
1、wp7的架構:wp7的架構基於微軟的.NET平台,在應用架構上是Sliverlight和XNA共同承擔,使用Sliverlight來開發應用程式,使用XNA來開發遊戲
wp7使用.NET的子集,使用sliverlight和XNA的類庫
2、windows phone 7的生命週期
windows phone是一個多任務的作業系統,但是不支援多線程,所以我覺得應該是一個假的多任務
它只有唯一一個第三方應用程式可以在前台運行。當使用者離開當前程式的頁面時,應用應用程式會被作業系統所終止。
螢幕鎖 呼入電話 短訊息 提醒功能 低電量 程式切換 使用者點擊開始按鈕 都有可能引起應用程式中斷
tombstoning 墓碑化凍結 是wp7生命週期的一大特徵
中斷髮生 失去啟用狀態(Deactivated) 程式終止狀態(Terminated) 重新啟用狀態(Activated) 運行狀態(Running)
生命週期處理事件 Application_Launching 程式啟動時調用 程式重新啟用時不調用 通常從Isolated Storage載入一些永久配置資料(persisted data)
Application_Closing 當程式關閉時調用 當程式失去啟用時不調用 通常儲存一些永久配置資料(persisted data)到Isolated Storage中
Application_Activated 當程式重新啟用的時候調用 當程式啟動的時候不調用 通常使用PhoneApplicationService.State儲存一些臨時資料(transient data)
Application_Decativated 當程式失去啟用時調用 當程式關閉的時候不調用 通常從PhoneApplicationService.State讀取一些臨時資料(transient data) 恢複到使用者離開該頁面時候的狀態,保持使用者體驗的一致性。
WP7中有這樣幾個術語,需要注意:
- Tombstoing:程式在導航出時被系統關閉的狀態。系統保留程式的的狀態,如果返回能夠恢複程式狀態。
- Page State:程式的視覺狀態。在OnNavigatedTo和OnNavigatedFrom中來添加事件。
- Application State:程式中無關於某個特定頁面的狀態,使用PhoneApplicationService類調用。
- Persitent Data:被程式中的所有執行個體享用的資料,一般使用isolated storage來儲存
- Transient state: 描述程式中實力的資料,一般儲存在PhoneApplicationService提供的State字典資料中。
wp7提供了兩種方式擷取資料:isoloated storage以及state。前者能夠長久儲存資料,而後者只能夠在記憶體還沒有消除你的state的情況下擷取資料。
在WP7中,一個應用如果在10秒鐘內未載入完成將會被系統強制關閉。
3、啟動器和選取器(Launchers&Choosers)
windows phone 應用程式不可以直接存取其他儲存資訊,如連絡人資訊等。
windows phone 應用程式不可以直接調用其他功能,例如電話和短訊息。
啟動器和選取器為應用程式提供間接訪問這些內建功能的方法,啟動器和選取器運行時作業系統可能終止當前的應用程式。
啟動器:啟動一個內建的程式提供給使用者使用 不返回任何資料給調用的程式
選取器:啟動一個內建的程式提供給使用者使用 返回一些資料給調用的程式 當使用者完成操作是,調用撐血會被重新啟用 並接受到返回的資料 但使用者可能取消操作這樣就返回Null
內建的啟動器 EmailComposeTask MarketplaceDetailTask MarketplaceHubTask MarketplaceReviewTask MarketplaceSearchTask MediaPlayerLauncher PhoneCallTask SearchTask SmsComposeTask WebBrowserTask
內建的選取器CameraCaptureTask EmailAddressChooserTask PhoneNumberChooserTask PhotoChooserTask SaveEmailAddressTask SavePhoneNumberTask
可能沒有tombstone的tasks PhotoChooserTask CameraCaptureTask MediaplayerLauncher EmailAddressChooserTask PhoneNumberChooserTask PhoneCallTask(都不會調用Deactived事件)
4、推播通知服務
windows phone執行模型決定只有一個第三方的應用程式可以再後台運行 第三方的應用程式不能在後台不斷的往Cloud拉資料 微軟提供推播通知服務給第三方應用程式取得更新通知的訊息 伺服器主動能發起的通訊 能有效降低電池的消耗
目前的版本的windows phone只支援最多15個第三方應用程式使用推播通知服務
訊息類型有
Raw Notification 可以發送任何格式的資料 應用程式可以根據需要加工資料 應用程式相關的通知訊息 只有在應用程式運行時才發送
Toast Notification 發送的資料為指定的XML格式 如果應用程式正在運行 內容發送到應用程式中 如果應用程式不運行彈出Toast訊息框提示訊息
Tile Notification 發送的資料為指定的XML格式 不會往應用程式進行發送 如果使用者吧應用程式pin 同 start,
那更新資料發送到start screen的title裡面(包含三個屬性,背景,標題和計數器 每個屬性都有固定的格式與位置 可以使用其中的屬性,不宜行三個屬性一起使用)
推送服務的詳解及代碼http://www.lob.cn/jq/wp7/7491.shtml
5、地理位置服務(Location Service)
使用Location Service能協助開發人員為windows Phone 開發具備位置感知(Location-Aware)功能的應用程式
Location Service能從GPS,Wifi和移動網路基站等多種資料來源中擷取位置資訊
根據應用程式的需要,Location Service從一個或者多個資料中計算出位置資訊
有效平衡電池的消耗與位置資訊的準確性 為應用程式提供基於事件(event-driven)的統一介面
想辦法減低電池的消耗
如果可以的話 使用那個較低準確率的資料來源
當需要的時候開啟地理位置服務,一旦使用完畢立刻關閉該服務
設定準確率的門限值,減低更新頻率
使用狀態更新事件(StatusChanged)監控服務狀態,提醒使用者狀態的更新
提醒使用者初次啟動地理位置服務時需要等待一段時間(15秒到120秒)