尽管很多人反感“Android应该改名叫Java GE”这种说法,但是没人能否认Java语言是Android开发人员所选的必备工具。Android运行时使用自己的虚拟机Dalvik,这并不是多数程序开发人员使用的普通Java虚拟机。Dalvik支持Java编程语言的大部分功能—但并不是全部。在本文中,您将学习高级Java功能及其如何在Android中实现。这些功能包括并发性、联网和数据库访问。 51CTO推荐:Android开发专题 Android应用程序一个最常见的任务就是检索数据或通过网络将数据发送到远程服务器。这一操作的结果通常是一些您想要展示给用户的新数据。这意味着您需要修改用户界面。大多数开发人员知道您将不会执行一个潜在的长期运行任务,例如,在主UI线程上通过网络访问数据(特别使用一个网络连接非常慢的手机)。冻结您的应用程序直至长期运行任务完成。事实上,如果这个任务超过5秒,Android操作系统将出现臭名昭著的Application Not Responding对话框。
![]() 图1.Android臭名昭著的Application Not Responding对话框 您不可能知道用户网络连接能有多慢。为了避免冒险,您必须在不同的线程上执行任务,或者至少不在主UI线程上执行。许多Android应用程序,但不是全部,需要处理多线程,由此引起并发。应用程序经常需要本地保存数据,Android数据库是一个很好的选择。这三个场景(不同线程,并发和本地保存数据)在Java环境中有许多标准方法可以用来处理。然而,正如您将要看到的,Android提供不同的选择。让我们逐个看看,看看其优点和缺点。 Android网络 通过网络使用Java编程进行调用是简单的,我们熟悉的java.net包含几个执行此操作的类。这些类大多数在Android中都可用,事实上,您可以使用像java.net.URL和java.net.URLConnection这样的类,就像您在其他Java应用程序中那样。然而,Android包括pacheHttpClient库,这是在Android上连接网络的首选方法。即使您使用常用Java类,Android实现仍然使用HttpClient。清单1显示了一个使用这个必不可少的库的示例。 清单1.在Android上使用Http Client库
在这段代码中有一组Stock对象。这是基本的数据结构对象,保存用户拥有股票信息(比如,代号、价格等)以及更多的个人信息(比如,用户付了多少钱)。您可以使用HttpClient类从Yahoo Finance检索动态数据(例如,这支股票目前的价格)。HttpClient包含一个HttpUriRequest,在本例中,您可以使用HttpGet,这是HttpUriRequest的一个子类。类似地,当您需要向远程服务器发送数据时,可以使用HttpPost类,当您从客户端得到HttpResponse时,您能接触到响应的潜在InputStream、对其进行缓冲、解析来获取股票信息。 |


