博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Windows Phone 7之初体验(三.开发问答(转发))

Posted on 2011-03-07 23:30  星尘的天空  阅读(262)  评论(0编辑  收藏  举报

该系列文章的转载地址:http://www.gwewe.com/dev/topics/1009070092.html

微软近日在Windows Phone 7 Series的官方论坛上列出了一些Windows Phone 7 Series开发的常见问题的解答 ,其中我们以前一直不明确的一些问题(例如多任务,沙箱,网络等等)都有了解答。为了方便大家我将其一一翻译出来,希望能够对您带来一些帮助。当然,如果您愿意的话,去查看原文会获得更加准确的理解。
--------------------------------------------------------------------------------

前后台中的应用程序进程
我的程序能运行在后台吗?
不可以,Windows Phone 7 Series的应用程序模型只支持在前台执行。如果另外一个程序(第三方或者内置的)在你的程序正在运行的时候启动,你将会得到一个你的程序将要被终止的事件通知。
我的程序从前台离开时会发生什么?
你的应用将会收到一个它将被关闭的通知。你的应用从前台离开的时刻并没有被马上终止,如果你需要保留状态,你需要自己编写一些逻辑来处理这些事情。
当我的程序从前台离开后重新运行的时候会发生什么?
你的应用程序将会从最初始的状态开始运行。如果需要保留状态,你应该自己编写逻辑来判断状态是否被保留并恢复它。
这是否意味着没有办法来编写应用进行有效的后台更新?
不是!我们提供了可以让你的应用所利用的Push Notification服务。例如聊天程序,轮流操作的游戏以及其他类型的依赖外部事件的程序都可以完美的利用Push Notification。你可以从MSDN的这篇文章上了解更多关于Push Notification的信息:?http://msdn.microsoft.com/en-us/library/ff402558%28VS.92%29.aspx
如果我的程序没有运行,我可以利用Push Notification来启动我的程序吗?
不能直接运行。当接收到一个对你的程序的Push Notification的时候,你的程序的令牌可以被更新至这新的信息,这时候用户将会被提示启动你的程序。程序并不会直接自动启动。
我可以设置一个定时器来启动我的程序吗?
不行,是否启动你的程序取决于用户。
我的程序可以被系统事件启动起来吗?
不太可能,但是它仍然是一个问题。绝大部分情况下,不可能由一个系统事件来启动起你的程序。但是当你的程序启动的时候或许你可以获得一个通知缓存。对于这个情况,当我们了解更多的时候我们会公布出来。 如果我不需要用户界面,我能编写一个服务的DLL驻留在系统中吗?
不行,你将不能编写系统服务DLL。所有的程序集都将运行在它们自己的独立的沙箱中,和操作系统以及其他应用程序隔离开。

应用程序的安装
我可以怎样向设备中安装应用程序?
应用程序将会在从MarketPlace中下载后自动安装。
我可以不使用MarketPlace而手工安装应用程序吗?
不行, 自行安装应用程序将是不允许的。唯一获得应用程序的途径是通过MarketPlace。
如果我不能按状态,我怎么测试我的应用程序?
作为一个注册了的开发者,你将会被允许注册一些设备用来直接部署你的应用程序用来测试。如果只是为了测试用不着把它部署到MarketPlace上面去。
我的应用只是为了我们的公司或者某些特殊的团体使用,我怎么通过MarketPlace将这些应用仅仅分发给他们?
目前MarketPlace并没有办法为私有应用程序锁定区域。当然也有针对移动运营商的例外情况。目前没有办法将你的程序针对特殊的团体或者设备做限制。.

设备连通性
我们仍然使用ActiveSyncIs来将设备连接到电脑吗?
不,同步时自动的就像将Zune HD连接到电脑上那样。
我应该如何通过Internet来传输数据?
HTTPGET或者WebServices之类的Web技术将被用来作为在Internet上通讯的方式。当你的程序没有运行的时候你还可以使用Push Notification来通讯。
我可以使用Socket来做点对点的通讯吗?
Windows Phone 7 Series目前并不直接支持Socket类。尽管手机上的Silverlight尽量靠近桌面版的Silverlight 3的特性列表,但是它只提供这些特性的一个子集所以并不包含所有的类(当然它也针对Silverlight 3做了一些扩展)。
我如何能够和其他的客户端实时的连接?
目前Windows Phone 7 Series的最初版本并不支持点对点的通讯。我们始终会评估开发人员和用户的需求,或许以后我们会决定将这个特性加上。

Hub/Pivot /Tab以及其他Silverlight中缺少的控件
我在那么多演示中所看到的”Hub”控件在哪里?
在MIX上的演示中你所看到的“Hub” 和 “Pivot” 控件我们还在持续完善,并不在当前的工具中所包含。
什么时候它们将会可用?
目前并没有针对这些控件的确切的时间表,,但是产品组将会密切关注开发者社区去了解开发人员需要什么样的有用的控件。如果你想要某个当前并没有的控件,请在论坛中留言。
我可以自己做一个吗?
当然你可以做自己的控件。但是你需要了解到Pivot / Hub控件是个非常重要的需求,机会是好的但是在以后这些或许会作为官方的工具的一部分发布。

设备存储
什么是”Isolated Storage”
“Isolated Storage” 涉及的是在设备的文件系统中,你的程序所占据的空间。你将无法访问这个空间以外的内容 (包括其他应用程序的空间或者操作系统的空间。) 这样做将会给你的程序提供一个自管理的安全的沙箱,并且预防其他程序不小心(或者恶意的)侵入你的应用程序空间。
在Windows Phone 7 Series的设备上有没有本地数据库可以利用?
没有,在最初的Windows Phone 7 Series上没有本地数据库API可以利用。
我应该如何为我的应用程序存储信息?
你可以将信息存储在自己的存储空间里。如果你需要大型的数据库这里有一些选择:Windows Phone 7 Seires 已经支持WebServices,它可以让你容易的访问存储在Internet上的信息。使用一个可以被WebServices访问的数据库,你的应用程序就可以在连接Internet的情况下实时的获取数据。
如何处理非连接的情景呢?
没有连接到Internet的话,你将无法访问云端服务的数据。这种情况下,建议你的程序通过多种方式来处理(在设备上缓存自定义格式的数据,提醒用户缺少连接)。
我的应用更加趋向于在非连接的场景下使用,如果我不能访问云端服务该怎么做?
针对这种场景有两种方案:
?制定你自己的数据格式,将数据存储在设备的存储空间里。
?继续开发针对Windows Phone 6.5或者之前版本的应用,那些版本可以支持本地数据库。
以后会支持本地数据库吗?
当前我们没有宣告这样的计划来增加这一功能;但是我们会密切关注开发人员和用户的需求并识别哪些特性会给每个人带来好处。

Native Code 的支持
我可以用c++来编写我的应用程序吗?
不行,当前C#是Windows Phone 7 Series平台上唯一支持的开发语言。
我可以用VB编写我的应用程序吗?
现在还不行,但是在以后的开发工具中我们会强烈考虑这一点的。
我可以用P/Invoke来调用系统API吗?
不行,作为ISV来说无法使用P/Invoke来访问系统API。任何试图使用P/Invoke的程序将会被从MarketPlace中退回。
我可以用P/Invoke来掉用我自己的native dll吗?
不行,native code不能作为你的应用程序的一部分来运行。P/Invoke是不允许的。

工具安装的问题
我的安装失败了
在将你的失败贴到论坛之前,请检查系统的事件日志或许能够提供一些线索。
我的安装结束了,但是我不能运行期Visual Studio 2010 Express for Windows Mobile. 我应该做什么?
这自然取决于你所遇到的错误。这里有一些基本的指导:
? 首先,检查发行说明. 确保你的系统符合要求并且不是这里已经列出来的问题。 (http://download.microsoft.com/download/D/9/2/D926FB38-BB43-4D87-AE5A-1A3391279FAC/ReleaseNotes.htm )
? 如果你遇到一个注册表或者文件的权限问题,试着以管理员权限运行应用程序。
? 如果你还没有重启,试着重启一下。对于某些人来说它将会清除掉很多问题。
我得到一个”The application cannot start” 的错误
请看这篇Blog的说明:http://blogs.msdn.com/visualstudio/archive/2009/10/29/how-to-fix-the-application-cannot-start-error.aspx

Silverlight, XNA, 和Compact Framework
手机上使用的什么版本的Silverlight?
手机上的Silverlight版本是一个很接近桌面上的Silverlight 3的子集。这里也有一些Silverlight 3上并没有的针对手机的特殊功能。但是许多在桌面版的Silverlight 3上正常运行的程序也能够在手机上正常运行。
我可以在Silverlight里面调用XNA的库吗?
Silverlight和XNA使用同一个Compact Framework上的基础代码。如果这个调用没有图形用户界面交互,多数情况下他们可以在Silverlight和XNA之间共享。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/twodays/archive/2010/03/22/5403918.aspx