Android应用程序的Java技术
来源:互联网 发布:淘宝女人 编辑:程序博客网 时间:2024/04/28 11:45
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库
- private ArrayList<Stock> fetchStockData(Stock[] oldStocks)
- throws ClientProtocolException, IOException{
- StringBuilder sb = new StringBuilder();
- for (Stock stock : oldStocks){
- sb.append(stock.getSymbol());
- sb.append('+');
- }
- sb.deleteCharAt(sb.length() - 1);
- String urlStr =
- "http://finance.yahoo.com/d/quotes.csv?f=sb2n&s=" +
- sb.toString();
- HttpClient client = new DefaultHttpClient();
- HttpGet request = new HttpGet(urlStr.toString());
- HttpResponse response = client.execute(request);
- BufferedReader reader = new BufferedReader(
- new InputStreamReader(response.getEntity().getContent()));
- String line = reader.readLine();
- int i = 0;
- ArrayList<Stock> newnewStocks = new ArrayList<Stock>(oldStocks.length);
- while (line != null){
- String[] values = line.split(",");
- Stock stock = new Stock(oldStocks[i], oldStocks[i].getId());
- stock.setCurrentPrice(Double.parseDouble(values[1]));
- stock.setName(values[2]);
- newStocks.add(stock);
- line = reader.readLine();
- i++;
- }
- return newStocks;
- }
在这段代码中有一组Stock对象。这是基本的数据结构对象,保存用户拥有股票信息(比如,代号、价格等)以及更多的个人信息(比如,用户付了多少钱)。您可以使用HttpClient类从Yahoo Finance检索动态数据(例如,这支股票目前的价格)。HttpClient包含一个HttpUriRequest,在本例中,您可以使用HttpGet,这是HttpUriRequest的一个子类。类似地,当您需要向远程服务器发送数据时,可以使用HttpPost类,当您从客户端得到HttpResponse时,您能接触到响应的潜在InputStream、对其进行缓冲、解析来获取股票信息。
现在,您看到了如何通过网络检索数据、如何用这个数据来通过使用多线程智能地更新Android UI。
- Android应用程序的Java技术
- 享受Android应用程序的Java技术盛宴
- 享受Android应用程序的Java技术盛宴
- 享受Android应用程序的Java技术盛宴
- 享受Android应用程序的Java技术盛宴
- 享受Android应用程序的Java技术盛宴
- 享受 Android 应用程序的 Java 技术盛宴
- Android应用程序的Java技术盛宴3
- Android应用程序的Java技术2
- 享受Android应用程序的Java技术盛宴
- 享受Android应用程序的Java技术盛宴(转)
- Ajax技术:构建动态的Java应用程序
- Ajax技术:构建动态的Java应用程序
- Ajax技术:构建动态的Java应用程序
- Ajax技术:构建动态的Java应用程序
- Ajax技术:构建动态的Java应用程序(转)
- Ajax技术:构建动态的Java应用程序一
- Ajax技术:构建动态的Java应用程序二
- Intel、AMD和ARM混战 CPU上演三国演义
- ubuntu下ffmpeg编译安装
- Android应用程序的Java技术盛宴3
- 端口0-300
- flex运行浏览器的设置
- Android应用程序的Java技术
- Java中Native关键字的作用(转)
- AMD+ARM=更加精彩纷呈的未来
- Android应用程序的Java技术2
- Oracle中TO_DATE格式
- 一个简单的FreeMarker案例
- 推土机+开普勒:海图尽览超级计算机“泰坦”
- Linux网络流量监控 工具 iftop
- 河南登封:违规拆迁愈演愈烈如此嚣张谁在作祟