WEB开发网
开发学院手机开发Android 开发 android 开发网络程序 阅读

android 开发网络程序

 2010-09-14 23:41:00 来源:WEB开发网   
核心提示:可以看到在 Android 中使用 JSON 解析器是多么简单,您将来自服务器的流转换成传递给 JSON 解析器的字符串,android 开发网络程序(10),您遍历对象图并创建 Stock 对象数组,如果使用过 XML DOM 解析,它还是一种可以迅速解析的格式,最后,这看起来很类似,因为编程模型几乎一样

可以看到在 Android 中使用 JSON 解析器是多么简单。您将来自服务器的流转换成传递给 JSON 解析器的字符串。您遍历对象图并创建 Stock 对象数组。如果使用过 XML DOM 解析,这看起来很类似,因为编程模型几乎一样。

像 DOM 一样,JSON 解析器可以用于内存密集型应用。在 清单 9 中,所有来自服务器的数据都表示为字符串,然后作为 JSONObject,最后作为 Stock 对象数组。换句话说,同一数据通过三种不同的方式表示。可以看到,对于大量数据而言,这可能是个问题。当然,一旦到达方法末尾,这三种数据表示方式中的两种都会落在范围之外,被垃圾回收器回收。但是,只是触发更频繁的垃圾回收可能会对用户体验带来负面影响,造成处理速度下降。如果内存效率和性能很重要,使用 protocol buffers 的解析器可能是个较好的选择。

回页首

使用 protocol buffers 处理二进制

Protocol buffers 是一个由 Google 开发的与语言无关的数据串行化格式,旨在比 XML 更快地通过网络传送数据。它是 Google 用于服务器对服务器调用的事实 标准。Google 将该格式及其用于 C++、Java 和 Python 编程语言的绑定工具以开源方式提供。

在 清单 3 和 清单 6 中看到 protocol buffers 是二进制格式。如您所料,这使得数据很简洁。如果在客户端和服务器端启用 gzip 压缩,在使用 XML 和 JSON 时通常也可以得到类似的消息大小,但是 protocol buffers 仍然有一些大小上的优势。它还是一种可以迅速解析的格式。最后,它提供了一个相当简单的 API。 清单 10 显示了一个示例解析器实现:

清单 10. Protocol buffers 解析器实现


private class StockProtoBufParser extends BaseStockParser{
public StockProtoBufParser(){
super("protobuf");
}

@Override
protected Stock[] doInBackground(String... symbols) {
Stock[] stocks = new Stock[symbols.length];
try{
Stocks.Portfolio portfolio =
Stocks.Portfolio.parseFrom(getData(symbols));
for (int i=0;i<symbols.length;i++){
stocks[i] = Stock.fromQuote(portfolio.getQuote(i));
}
} catch (Exception e){
Log.e("DayTrader", "Exception getting ProtocolBuffer data", e);
}
return stocks;
}
}

上一页  5 6 7 8 9 10 11 12  下一页

Tags:android 开发 网络

编辑录入:coldstar [复制链接] [打 印]
赞助商链接