Windows Phone的网络连接策略

简介:

前言

在微薄中“有人”(我记得是谁,^_^)问起Windows Phone在锁屏下是否继续链接WiFi,引起了很多WP微博控在讨论,其实我本来不关心这个问题的,因为这个是不可控的,但是讨论的人太多了,因此我想聊聊我对Windows Phone的网络连接策略的想法。

问题定义

这个问题可以简单的重新定义为Windows Phone在空闲(idle)情况下,是否进行网络链接。到底使用哪种链接方式,是由Windows Phone的策略所决定的,这种策略基本上是考虑电池使用量和链接成本($$$$$$$)等因素。

多任务之梦

如果有人觉得Windows Phone是单任务,在锁屏的时候会把所有app杀死了,那么他/她可能给水军给忽悠了,Windows Phone从第一天开始就是一个多任务操作系统,所以在锁屏情况下继续保持网络链接,继续完成后台任务是可能的。但微软一般不这样做,而且限制app开发者这样做,这些都是为了提供更好的用户体验。

到底链接or断开?

我的答案是yes and no,呵呵。在Windows Phone锁屏的情况下,到底继续保持链接还是断开链接,不能简单的回答,因为这个操作是根据策略来决定的。这些策略的目的都是为了提供更好的用户体验,这种策略简单可以参考下面的公式:

任务类型 + 电源状态 = 是否断开链接

根据之前重新定义,公式可以替换为:

任务类型 + 电源状态 + 可用网络链接媒体(WiFi/3G) = 是否进行网络链接

也就是说在不同的情况下,Windows Phone会相应的保持或者断开链接。这也是现代智能手机系统(WP, Android,iOS)最最基本的功能了。现代的智能手机系统一般都由系统来进行电源管理和网络连接管理。请注意我把“系统”两个字重点加粗了,因为非现代智能手机系统可能是把主动权交给了应用(app)来管理的(当然最终操作系统保留了最高决定权),例如以前的Windows Mobile是由应用来决定打开和关闭网络连接,打开3G还是WiFi,试问一个app开发者怎么要肩负着OS开发者的责任,需要考虑的情况也太多了。再例如Symbian的app在启动是会提示“是否打开网络连接,到底打开3G还是WiFi”,把链接责任推给了用户。这些老系统都极大破坏了用户体验。

-------------------------貌似合理的跑题-------------------------------------------------------------------------------------

下面举一个Agile的例子,讨论一下用户到底要什么:

最为一个非技术用户,如果我想看微薄,那么打开微薄app就可以看。

这里的非技术用户根本就不关心手机的链接状态,关心的是是否能查看和发微薄

这里用户故事有以下的附加条款(acceptance criteria):

1.如果能接触(这里没有使用链接,其实也是这个意思,connect)到微薄后台服务,直接打开app,显示默认页,例如“@我的”

2.如果不能接触到微薄后台服务,而且没有缓存,提示用户没网络链接,请稍候再试。

3.如果不能接触到微薄后台服务,而且有缓存,提示用户只能看缓存。

这个用户故事有个特点是,不由用户来决定,而是预定动作,强迫用户选择或接受,但是假装很尊重用户的样子。回到Jobs那句话,给用户最好的选择就是不给他选择。

-------------------------跑回到主题上------------------------------------------------------------------------------------

由此可以知道关心这种问题的都不是“非技术用户”,对,我就是说你,0_^。其实Windows Phone已经把管理网络链接的主动权收起来,统一由系统进行管理,作为app开发者不一定要把这个问题查根问底也能写出很优秀的程序,但是如果真的想知道,我下面尽力探讨一下。

什么时候Windows Phone在空闲状态会进行网络链接

上面讲到网络链接的策略,因此我们开发的app符合这些策略,就会在空闲状态下也进行网络链接。我尽力列出所有可能出现的情况:

ApplicationIdleDetectionMode设置为disabled

Windows Phone的app可以通过修改PhoneApplicationServiceApplicationIdleDetectionMode强制app在锁屏的时候不会被墓碑化(注意Mango发布后这个功能有时候是鸡肋了),这种程序一般是导航程序,音乐播放程序(mango后有替代方案,会在后面讲述),也就是手机锁屏,app还是继续运行,程序可以继续做一些网络request,这样WiFi链接就会保持(如果有WiFi链接的话)。但是根据微软的文档,在程序锁屏情况下应该停止/关闭很多操作,例如Timer,动画(animations ),重力加速计(accelerometer ),地理定位服务(Location Service ),FM收音机,同时断开网络链接等等。但是注意我这里使用了应该,没有说必须,因此app还是可以继续做网络请求的。

Background Audio

使用AudioPlayerAgent(后台音频播放)的app在锁屏的时候也可以继续播放,如果音频的url指定为网络的url,那么为了能正常播放,Windows Phone继续保持WiFi链接如果WiFi可用的话。

Background File Transfers

如果app使用了BackgroundTransferService(后台传输服务),那么程序会在特定情况下保持链接,继续下载,如果文件小于20M,Windows Phone会继续使用3G下载,如果文件100M以下,那么Windows Phone会继续使用WiFi下载文件,如果文件大于100M,必须外接电源和联通WiFi的情况下Windows Phone才会启动下载。

Background Agents

如果app使用了ScheduledTask(定时任务),那么程序在每隔一段时间会启动执行一下,可能有两种不同的任务如下

PeriodicTask (周期性任务)会每隔30分钟执行一次,每次只能执行25秒。

ResourceIntensiveTask (耗资源的任务)每隔10分钟执行一次,但是需要连接上外接电源。

其中两种任务在执行过程都可以链接网络,请求网络资源的。

Schedule Tile

如果app使用了ShellTileSchedule(信息块更新任务),那么程序每隔一段时间可以更新Live Tile,如果Tile的图片在网络上,会启动网络链接。

Tile Notification

官方没有说明推送任务的实现细节,从系统角度看一般实现方法可能如下:

1.通过sms触发手机去请求。

2.手机定时pull(拉)信息。

不管哪种方法,手机最终都是需要通过网络链接来取得推送服务的信息,因此也可能使用到网络链接。

总结

不管哪种方法,微软试图做的是提供良好的用户体验(包括电源消耗,反映速度,通信资费等等),因此作为app开发者,我们要做的是在现有的限制条件下,提供更好的用户体验,没必要为了数据长链接而破坏用户体验。

有任何问题,请留言,或者微博我 @林永坚jake 谢谢!

广告时间

一年一度的墨尔本杯又来了,看马看美女的时候到了,一起来下来免费Melbourne Cup app吧。

http://http://windowsphone.com/s?appid=8801c39f-519c-48a1-a21a-2585ddb851d4


 

http://http://windowsphone.com/s?appid=8801c39f-519c-48a1-a21a-2585ddb851d4

任何建议都welcome,谢谢!




    本文转自Jake Lin博客园博客,原文链接:http://www.cnblogs.com/procoder/archive/2011/10/28/WIndows-Phone-Idle-Mode.html,如需转载请自行联系原作者

相关文章
|
1月前
|
存储 安全 网络安全
云计算时代的网络安全挑战与策略
【10月更文挑战第34天】在数字化转型的浪潮中,云计算作为一项关键技术,正深刻改变着企业的运营方式。然而,随着云服务的普及,网络安全问题也日益凸显。本文将探讨云计算环境下的安全挑战,并提出相应的防护策略。
|
3天前
|
人工智能 搜索推荐 决策智能
不靠更复杂的策略,仅凭和大模型训练对齐,零样本零经验单LLM调用,成为网络任务智能体新SOTA
近期研究通过调整网络智能体的观察和动作空间,使其与大型语言模型(LLM)的能力对齐,显著提升了基于LLM的网络智能体性能。AgentOccam智能体在WebArena基准上超越了先前方法,成功率提升26.6个点(+161%)。该研究强调了与LLM训练目标一致的重要性,为网络任务自动化提供了新思路,但也指出其性能受限于LLM能力及任务复杂度。论文链接:https://arxiv.org/abs/2410.13825。
25 12
|
1月前
|
安全 Windows
【Azure Cloud Service】在Windows系统中抓取网络包 ( 不需要另外安全抓包工具)
通常,在生产环境中,为了保证系统环境的安全和纯粹,是不建议安装其它软件或排查工具(如果可以安装,也是需要走审批流程)。 本文将介绍一种,不用安装Wireshark / tcpdump 等工具,使用Windows系统自带的 netsh trace 命令来获取网络包的步骤
71 32
|
23天前
|
存储 安全 网络安全
云计算与网络安全:探索云服务的安全挑战与策略
在数字化的浪潮下,云计算成为企业转型的重要推手。然而,随着云服务的普及,网络安全问题也日益凸显。本文将深入探讨云计算环境下的安全挑战,并提出相应的防护策略,旨在为企业构建安全的云环境提供指导。
|
25天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
66 7
|
28天前
|
分布式计算 运维 API
针对MaxCompute经典网络域名下线,Dataphin应对策略的公告
针对MaxCompute经典网络域名下线,Dataphin应对策略的公告
239 7
|
29天前
|
存储 安全 网络安全
云计算时代的网络安全挑战与策略
随着云计算的广泛应用,企业和个人越来越依赖云服务来存储和处理数据。然而,这也带来了新的网络安全威胁和挑战。本文将深入探讨云计算环境中的网络安全问题,包括数据泄露、恶意软件攻击、身份盗窃等风险,并提供有效的安全策略和技术解决方案,以保护云环境免受网络攻击。
|
29天前
|
SQL 安全 算法
网络安全漏洞与防御策略:深入加密技术和安全意识的培养
在数字化时代,网络安全的重要性日益凸显。本文将深入探讨网络安全的多个维度,包括常见的网络漏洞类型、加密技术的应用以及如何培养强大的网络安全意识。通过分析这些关键要素,读者将获得保护个人和组织数据免受威胁所需的知识。
|
1月前
|
SQL 安全 算法
数字时代的守护者:网络安全与信息安全的现代策略
在数字化浪潮中,网络安全与信息安全如同航船上不可或缺的罗盘和舵。本文将探讨网络安全漏洞的成因、加密技术的重要性以及安全意识的培养,旨在为读者提供一套完整的网络自我保护指南。从基础概念到实用策略,我们将一起航行在安全的海洋上,确保每一位船员都能抵达信息保护的彼岸。
|
1月前
|
监控 安全 网络安全
云计算环境下的网络安全防护策略
在云计算的浪潮下,企业和个人用户纷纷将数据和服务迁移到云端。这种转变带来了便利和效率的提升,同时也引入了新的安全挑战。本文将探讨云计算环境中网络安全的关键问题,并介绍一些实用的防护策略,帮助读者构建更为安全的云环境。