预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共33页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Android开发教程之使用WebWorkers来加速您的移动Web应用程序一直以来,Web应用程序被局限在一个单线程世界中。这的确限制了开发人员在他们的代码中的作为,因为任何太复杂的东西都存在冻结应用程序UI的风险。通过将多线程引入Web应用程序,WebWorkers扭转了这一不利局面。这对于大部分应用程序逻辑都位于客户端的移动Web应用程序来说尤其有用。在本文中,您将了解如何使用WebWorkers并发现哪些任务最适合它们。您还将看到如何使用其他HTML5技术才能提高使用那些技术的效率。HTML5是一项被大肆宣扬的技术,但是它实至名归。它有望成为一个技术引爆点,将桌面应用程序功能引向浏览器。它不仅适用于传统浏览器,甚至也针对移动浏览器。更好的是,最流行的移动浏览器已经采纳和实现HTML5规范的很多重要部分。在这个五部分的系列中,我们将详细了解几个新技术,它们都是HTML5的一部分,可以大大影响移动Web应用程序开发。在每一部分中,都将开发一个可以工作的移动Web应用程序,展示一个可以用于现代移动Web浏览器(比如iPhone和基于Android的设备上的浏览器)的HTML5特性。在本文中,您将使用最新的Web技术开发Web应用程序。这里的大部分代码只是HTML、JavaScript和CSS—所有Web开发人员的核心技术。所需的最重要的工具是用于进行测试的浏览器。本文大部分代码将在最新桌面浏览器上运行,但也有一些例外,我们将在文章中进行说明。当然,您也必须在移动浏览器上测试,为此,您需要最新的iPhone和AndroidSDKs。本文将使用iPhoneSDK3.1.3和AndroidSDK2.1。本文的样例还将使用一个代理服务器来从浏览器访问远程服务。这个代理服务器是一个简单的Java™servlet,但也可以使用以PHP、Ruby以及其他语言编写的代理轻松替换。参见参考资料获取链接。对于大多数开发人员来说,多线程或并发编程并不新鲜。但是,JavaScript并不是一种支持并发编程的语言。JavaScript的创建者认为,对于JavaScript这样旨在Web页面上执行简单任务的语言来说,并发编程容易出现问题,而且没有必要。然而,由于Web页面已经发展成为Web应用程序,使用JavaScript完成的任务的复杂程度已经大大增加,向JavaScript提出了与其他语言同等的要求。与此同时,使用其他支持并发编程的语言工作的开发人员经常面临伴随线程和mutexes这样的并发原语而来的超高复杂性的困扰。实际上,最近像Scala、Clojure和F#这样的几种新语言已经发展,它们都有可能简化并发性。常用缩略词 Ajax:异步JavaScript+XML API:应用程序编程接口 CSS:层叠样式表 DOM:文档对象模型 HTML:超文本标记语言 REST:具象状态传输 SDK:软件开发工具包 UI:用户界面 URL:统一资源定位符 W3C:万维网联盟 XML:可扩展标记语言WebWorker规范不只是向JavaScript和Web浏览器添加并发性,而且是以一种智慧的方式添加,这种方式将增加开发人员的能力,但不会向他们提供一种会导致问题的工具。例如,多年来,桌面应用程序开发人员一直在使用多线程来支持他们的应用程序访问多个I/O资源,以避免在等待这些资源时冻结UI。然而,当这些多线程更改共享的资源(包括UI)时,这样的应用程序通常会出现问题,因为这种行为可能会导致应用程序冻结或崩溃。有了WebWorkers,这种情况就不会发生。衍生线程不能访问主UI线程访问的资源。事实上,衍生线程中的代码甚至不能与主UI线程执行的代码位于同一个文件中。 您甚至必须提供相应的外部文件作为构造函数的一部分,如清单1所示。 这个进程使用三个资源: 在主线程上执行的Web页面JavaScript(我称其为页面脚本)。 Worker对象,这是用于执行WebWorker函数的JavaScript对象。 将在新衍生的线程上执行的脚本。我称其为Worker脚本。 让我们首先看看清单1中的页面脚本。 varworker=newWorker("worker.js"); worker.onmessage=function(message){ //dostuff }; worker.postMessage(someDataToDoStuffWith); 在清单1中,您可以看到使用WebWorkers的三个基本步骤。首先,您创建一个Worker对象并向它传递将在新线程中执行的脚本的URL。Worker将执行的所有代码都必须包含在一个Worker脚本中,该脚本的URL将被传递到这个Worker的构造函数中。这个Worker脚本的URL受到浏览器的同源策略的限制—它必须来自