惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Full Disclosure
博客园 - 三生石上(FineUI控件)
MyScale Blog
MyScale Blog
Apple Machine Learning Research
Apple Machine Learning Research
L
LINUX DO - 最新话题
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
宝玉的分享
宝玉的分享
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
GbyAI
GbyAI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
Visual Studio Blog
爱范儿
爱范儿
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
月光博客
月光博客
博客园 - 叶小钗
D
Docker
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
Tailwind CSS Blog
D
DataBreaches.Net
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog RSS Feed
量子位
美团技术团队
Vercel News
Vercel News
Y
Y Combinator Blog
IT之家
IT之家
Martin Fowler
Martin Fowler
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
SegmentFault 最新的问题
腾讯CDC
Recent Announcements
Recent Announcements
Google DeepMind News
Google DeepMind News
罗磊的独立博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
The Register - Security
The Register - Security
博客园 - 司徒正美
N
Netflix TechBlog - Medium
S
Schneier on Security
博客园 - 聂微东
U
Unit 42
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
雷峰网
雷峰网
Latest news
Latest news

博客园 - 被遗弃的小指

微软今日开始向开发者推送版本号为7712的Mango 微软发布Android应用的WP7迁移指导工具 你不可不知的Mango — 开发者篇(4) 你不可不知的Mango — 开发者篇(3) 你不可不知的Mango — 开发者篇(2) 第六届 Mobile Dev Day – WP7优秀应用经验分享日 Windows Phone 7 漂流记 WPMind Framework for WP7 开源项目启动 TechEd 2010微软技术大会 Windows Phone 7 相关课程预告 Windows Phone 7 Marketplace现状分析 Windows Phone 7 开发技术在线学习【3】 — Launchers & Choosers 助力Windows Phone 7,微软推出APP HUB Windows Phone 7 SDK 正式版本RTW Windows Phone 7的XNA游戏开发系列教程 Windows Phone 7 Jump Start Training视频教程 给你的Windows Phone 7模拟器加入GPS和加速度传感器模拟功能 Windows Phone 7 开发技术在线学习【2】 -- WP7 多任务之道 比一比,秀一秀!微软正版软件拿回家! Windows Phone 7开发技术在线学习系列活动正式开始
你不可不知的Mango — 开发者篇(1)
被遗弃的小指 · 2011-05-26 · via 博客园 - 被遗弃的小指

昨天微软对外公布了Windows Phone的下一个代号为Mango的重要更新的更多细节,并在同时也发布了Mango的开发工具,Windows Phone Developer Tools 7.1(Beta)。本文将从开发者角度简单谈谈Mango带来哪些改变。

What’s New

image

首先让我们从上面这张图片来简单的看看Mango中都有啥让你心动不已的新玩意儿呢?

1。Sensor API:

增强了的各种传感器API。首先,在Mango中终于增加了指南针传感器的API,其次是Mango中新加入的可选的陀螺仪传 感器及其API。在MIX11中曾经提及过一个被称之为Motion Sensor的东东,不过这名字太容易引起误解。因为说起Sensor的话大家就会想起什么具体的硬件传感器。但是这里的Motion Sensor/Motion API只是将加速度传感器、指南针传感器以及陀螺仪的原始数据进行高层次的封装,以便让你更好的利用这些传感器的数据。所以,现在这组高度封装的API称 之为Motion API。

其次,在Mango中终于允许你直接来访问摄像头的原始的帧数据。初此之外还包括闪光灯、自动对焦、快门按钮等。这样使得你来开发出自己类似于Camera360之类的特效拍照软件或者说某些实景增强软件成为可能性。

2。Multi Tasking:

也就是大家议论最多的多任务功能了。首先是Fast App Switching,应用程序快速切换。其实用户才不在乎你到底是不是什么多任务呢。他们关心的是我打开程序A,然后切出去使用程序B,当我回到程序A的时候这个程序A是不是能够接着刚才中断的地方接着往下进行,当然这个程序A得要能够快速的切换过来才行。

为了解决这个需求,在Windows Phone 7的时代微软提出了一个Tombstoned(墓碑机制)的概念。也就是在你的程序正在运行的时候,如果按下Home键切出去或者受到某些干扰(例如你在 程序里面打开了联系人选择器等)被Deactive的时候,你的程序将会进入一个墓碑化的状态。在这个墓碑化的状态时你需要来自己把当前的所有状态都保存 下来,而你的程序实际上已经退出运行状态。然后你的程序被再次激活(例如选择器被关闭)(Active)的时候,系统会自动进入你刚才进入墓碑机制的那个 页面,你需要在代码中手工再恢复刚才保存的那些数据。这样形成一个任务切换到后台,然后再次恢复的体验。

image

但是这种操作的致命缺点就是所有的程序在切换出去后都需要墓碑化这导致切换的效率极低。所以,在Mango中引入了一个新的状态,被称之为 Dormant(休眠)。在一个程序被停用的时候,它首先尝试着进入Dormant状态。Dormant状态中程序并没退出,而是该程序中所有的线程活动 都将被挂起保留在内存中。当你的程序被再次激活的时候,它就可以简单的把程序从休眠状态中恢复过来。这样程序的切换和恢复就很快了。但是,并不是所有的程 序被切换后都会进入Dormant状态,这取决于当前的系统资源。如果内存不足了,它会将你的程序自动的切换到墓杯化状态。而从墓碑化状态再恢复过来的话 就需要你做一些和以前一样的状态恢复工作了。通过Dormant,Mango使得快速的应用程序切换和恢复成为可能性。

image

那么系统中有多少程序可以被同时休眠?文档中似乎并没有提及,据WPMind判断,这应该取决于系统的内存。而进入墓碑化状态的程序则有上限,那就是同时只有5个墓碑化的程序。

但是你会说Dormant不是真正的多任务啊。是的,这并不是真正的多任务。因为你的程序休眠后系统中并发运行的第三方应用始终还只是一个。好吧,这就依赖于Mango中其他两个最重要的概念了:Notification ServiceBackground Agents

Notification Service,在文档中也被称之为Scheduled Notification。它可以让你的程序指定在某个时间间隔后向用户发出一个Alerm或者Reminder对话框。当然,这时候你的程序可能并没有 运行(甚至是手机已经重启了)。而你可以指定用户在遇到Reminder对话框的时候来打开你自己程序并进入一个特定页面。

imageimage

除了Notification Service之外,Mango还提供了Background Agents,也被称为Scheduled Tasks。它允许你的程序在后台执行某些任务,当然这时候你的程序可以没有在前台运行。这里有两种Background Agents可以使用,PeriodicTask和ResourceIntensiveTask。

Periodic Agents通常每30分钟运行15秒。使用这种Agent,你可以让系统周期的去做一些小的任务,例如获取你的位置、和服务器同步数据等等。

ResourceIntensiveTask即Resource-intensive Agent,它可以在你的手机空闲(CPU空闲,没有拨打电话等)并且电量充足(插着电源或者90%以上的电量)的时候自动的持续运行10分钟。不过还有 一个更变态的需求,就是手机这时候没有数据网络的连接。也就意味着你的手机必须是通过Wi-Fi或者USB线连接到电脑上来上网的。这种场景 下,WPMind认为比较适合于某些行业用户,例如出去集采信息,回到办公室后将手机连接到电源上然后进行大量数据的同步。

除此之外,其实Mango还有两个后台服务可以用于一些后台应用场景:Background File Transfer ServiceBackground Audio Service。Background File Transfer Service可以让你的程序在后台与其他Web服务器进行通讯(Get 或者 POST)来上传或者下载文件。不过通过Post上传的数据不得超过3M,而下载的数据如果超过20M只能是手机处于WiFi或者USB线连接的时候才可 以。使用该服务之需要指定目标、本地存储路径和传输方式(GET还是POST)就可以,再也不需要你自己去处理复杂的什么HttpWebRequest对 象了。

至于Background Audio服务则可以允许你的程序在后台运行时播放、控制音乐。想要制作自己的音乐播放器的兄弟终于可以放轻松了,毕竟在Windows Phone 7中由于不支持这功能很多人都打消了做自己的音乐播放器的念头。

通过Fast App Switching和Background Agents、Notification Service以及刚才介绍的Background File Transfer Service和Background Audio Service,Mango终于为开发人员打开了一些通道从而使得你可以开发出更有意思的一些应用来。

好的,今天就先写到这里,明天继续给大家介绍这张图片中剩下的部分。


注意:本文内容源自 MIX11部分课程内容以及Windows Phone Developer Tools 7.1 (Beta)的文档,本文提及的Mango相关知识在Mango的正式版本上市之后或许会有所改变。

延伸阅读:【MIX11】多图揭秘Mango

原文首发于WPMind.com