Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

将异步的后台任务从Android Honeycomb移植到Windows Phone Mango-基本的区别

From Wiki
Jump to: navigation, search
WP Metro Icon Porting.png
SignpostIcon WP7 70px.png
Article Metadata

兼容于
文章
翻译:
最后由 hamishwillee 在 16 Jul 2013 编辑

这篇文章解释了在异步的后台任务方面Windows Phone Mango 和 Android Honeycomb的深层差异。

Contents

简介

在博客和论坛上存在着许多讨论Android和Windows Phone如何处理后台任务的文章。这两个平台都有API来管理后台任务。它们的API也没有多大的不同。

不同用途的API

这样可能会有点误解,如果只从应用程序开发人员的角度来比较这两个API。Microsoft Windows Phone API只是为应用程序开发人员来设计的,开发人员不能扩展此平台实现新的特性,但可以在Microsoft定义的平台上创建新的应用程序。 另一方面,Android的情况就有些不同了。Android开发人员不仅可以创建新的应用程序而且可以在平台上使用Android flavor的Java编程工具或者将Java和native code组合起来扩展新的特性。Android的API比起Mango的来更难使用。 这两个API是为不同的目的来设计的。Android API不仅为应用程序开发人员服务而且也满足了平台开发人员的要求。另一方面,Mango API只适合应用程序开发人员来使用,因此相比起Android API来说,它有点过于缺少灵活性。 作为这两个API的基本用例也是不同的,而且它们不同也是在情理之中。不同点表现在API设计上。Android提供了更多的抽象的解决问题的方案,API比起Microsoft的来更通用。Microsoft提供了更多的现成的面向对象的解决方案来管理后台任务的关键用例。

API的可用性

Windows Phone Mango API的设计目的是尽可能的方便使用。这个平台尽一切可能做到在即使你写的代码不太完善的情况下也无法占用全部系统资源。Mango的后台任务每30分钟运行一次。所以所谓的资源密集型后台作业只会在特定条件下运行,例如有些任务在高速网络可用时才运行。应用程序开发人员只能做框架允许的东西。这就是big picture。 Microsoft的做法有一些优势。限制应用程序每30分钟运行一次他们的后台任务,让系统的其他部分有更多的执行时间。此外,应用程序开发人员无法在没有特别原因的情况下运行高优先级别的服务。通过设计不同用途的API,例如音频播放,开发人员更容易来使用它们,通用的API通常更难使用且配置更复杂-不同的用例,不同的参数,几个重载等等。

应用程序开发人员的观点-使用较多或较少的资源最终取决于平台

需要使用API来创建Android和 Windows Phone Mango的后台任务的场景非常相似。无非就是音频播放,用户通知,设置报警等等。最大的区别在于在实现后台任务时这两个平台在定义执行时间和用户使用其他资源的自由度不同。 在Android平台上,开发人员可以在后台任务中创建所谓的前台优先级。这就意味着系统不会取消任务或者至少试图让任务尽可能长时间地执行。

有关根本区别的更多信息

你可以在后台运行Android服务,但请记住,在你的线程被安排在一个相对较高的优先级上的同时你使用的资源也被认为拥有高的优先级。如果系统资源耗尽,你的任务将不会是第一个被关闭的。你的任务必须是非常重要的一个。伴随着大的权利也带来了大的责任。对于Android,你使用相同的API来写平台代码和应用程序代码,尽管某些API仅供内部使用。来自Google的Dianne Hackborn常常回答有关后台任务的困难问题。一篇非常好的有关Android多任务的概述文章在此http://android-developers.blogspot.com/2010/04/multitasking-android-way.html 网站。这篇文章遗留了些问题,例如线程的优先级问题没有解决,但绝对是一个非常好的起点。 对于Windows Phone Mango,你仅限于使用专门的后台API来管理确定的用例,例如音频回放,这伴随着很大的限制条件。当涉及到成千上万的应用程序时,Mango的方法相对更安全一点。Microsoft付出了巨大的努力来使应用程序开发人员不可能写程序来耗尽所有的资源。在如下网站你可以找到更多的有关在Windows Phone上实现后台任务的信息:http://www.microsoft.com/download/en/details.aspx?id=27411。

总结

这将是有趣的,看看大约一年后两个平台上的API还会是相同的吗?当我们将使用后台任务的程序从Android移植到Windows Phone时,我们会碰到什么样的移植问题?

This page was last modified on 16 July 2013, at 08:10.
49 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×