加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WP7学习笔记(三)

发布时间:2020-12-17 01:09:30 所属栏目:安全 来源:网络整理
导读:一、WP7多任务的模拟 1)应用程序模型只支持在前台执行 2)如果另外一个程序在你的程序正在运行的时候启动,程序收到一个将要被终止的事件通知 3)应用从前台离开的时刻并没有被马上终止,如果需要保留状态,就要自己编写一些逻辑来处理这些事情 4)在程序关

一、WP7多任务的模拟
1)应用程序模型只支持在前台执行
2)如果另外一个程序在你的程序正在运行的时候启动,程序收到一个将要被终止的事件通知
3)应用从前台离开的时刻并没有被马上终止,如果需要保留状态,就要自己编写一些逻辑来处理这些事情
4)在程序关闭状态下,可以通过web service向程序发送信息以及更新程序状态
多任务模拟机制:
二、Tombstone
1)可执行模式:Tombstonign、PageState、Application state、President data,Transient state,Tombstoning和Transient state模式下模拟多任务,在Tombstone模式下,应用被操作系统Terminate,就需要保存Transient state,以备于应用复活后恢复应用原状态
2)Lifecycle包括:Launching、Running、Closing、Deactivating,Activating这五种运行态,Deactivating,Activating就是Tombstone下的运行态。在这两个运行态下可以完成唤醒后的状态或数据的转移
3)PhoneApplicationService,保存状态信息
代码:
?????? protected override void OnNavigatingFrom(System.Windows.Navigation.NavigatingCancelEventArgs e)
??????? {
??????????
??????????? if (PhoneApplicationService.Current.State.ContainsKey("Data"))
??????????????? PhoneApplicationService.Current.State.Remove("Data");
??????????? PhoneApplicationService.Current.State["Data"] = Txt_Msg.Text;
??????????? base.OnNavigatingFrom(e);
??????? }
??????? protected override void OnOrientationChanged(OrientationChangedEventArgs e)
??????? {
??????????? if(PhoneApplicationService.Current.State.ContainsKey("Data"))
??????????????? Txt_Msg.Text=PhoneApplicationService.Current.State["Data"].ToString();
??????????? base.OnOrientationChanged(e);
???????????
??????? }
三、Push Notification
为手机端应用和webservice之间建立了一条专用、持久、稳定的通道来推送通知。当通道建立后,手机端应用可以接受webservice的任何信息。
其中信息可分为以下几类
1.Tile Notification:可以改变Quick Lanuch area内的图标内容(图片、文字等)的方式,但需要程序被Pin to Start
2.Toast Notification:在屏幕上面可以显示一个提示栏的方式,当点击提示栏可以打开应用程序
3.RawNotification:直接使用Http方式来接受(Http polling)通知的方式。是不可见的,以后台方式传送通知
——创建客户端代码:
HttpChannel = new HttpNotificationChannel(ChannelName,"TestService");
httpChannel.Open();
//绑定notification
httpChannel.BindToShellToast();
httpChannel.BindToShellTile(uris);
//获取notification channel URI
httpChannel.ChannelUriUpdated += new
EventHandler<NotificationChannelUriEventArgs>(httpChannel_ChannelUriUpdated);
//获取Raw notification
httpChannel.HttpNotificationReceived += new
EventHandler<HttpNotificationEventArgs>(httpChannel_HttpNotificationReceived);
// 获取Toast notification
httpChannel.ShellToastNotificationReceived += new
EventHandler<NotificationEventArgs>(httpChannel_ShellToastNotificationReceived);
// 获取Push notification error message
httpChannel.ErrorOccurred += new
EventHandler<NotificationChannelErrorEventArgs>(httpChannel_ExceptionOccurred);
//对于Tile notification是由系统来接收的,所以没有相应的Event

——创建服务端:都是以Http方式发送不同的通知;需要配置相应的参数,告诉Push Notification Service所发送的类型是什么;代码如下: HttpWebRequest request = (HttpWebRequest)WebRequest.Create(channelUri); request.Method = WebRequestMethods.Http.Post; request.ContentType = "text/xml; charset=utf-8"; request.ContentLength = notificationmessage.Length; request.Headers["X-MessageID"] = Guid.NewGuid().ToString(); //设置发送的Notification类型 request.Headers[“X-WindowsPhone-Target”] = “toast”; request.Headers["X-NotificationClass"] = “2”;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读