- 締切済み
androidをjavaで開発しています
XMLparserでレスポンスを読んだり、リクエストを送ったりしています。Webサービスでサーバーとはxmlでやりとりしています。 通信が3Gだと遅く、wi-fiならそれなりのスピードで動くのですが、実際の環境としては3Gで使用されるようなので、どうにかしてチューニングして少しでもスピードを上げたいのですが、 なにかこのたぐいのプログラミング(androidでWebサービスでサーバーとxmlのやりとりをする)のご経験のある方、スピード改善のアドバイスを頂けるとありがたいです。 あれはやってますか?とか、そんな感じでもうれしいですし、ヒント的なことでもなんでも結構ですので、よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- korokokokoro
- ベストアンサー率19% (20/102)
xmlは随時変更されている? 定番というか当たり前のことだけど随時ではなくてある一定期間あくなら Android側でキャッシュしていて更新されたときにサーバに問い合わせに行くようにする。 更新されたかどうかは内部バージョンを用意してそのバージョンだけを見に行くようにして 更新されてなければ処理はそこで終了させるようにすればいいきが
- superside0
- ベストアンサー率64% (461/714)
アプリで対応できる範囲には限界があるので、 もし、サーバーからのデータ量や、サーバーとの通信経路上に、 ボトルネックがあるようなら、たとえ、サーバーに手を出せないという場合でも、 サーバーを二層構造にするという方法もありますね。 一括データしか取り出せない汎用のXML生成サーバー ↑↓(データが重い) アプリ を 一括データしか取り出せない汎用のXML生成サーバー ↑↓ 必要最低限なXMLデータだけを返す代理サーバー(自前で用意) ↑↓(データが軽くなる) アプリ にするって感じで。 また、さらに、代理サーバーでXMLをキャッシュもするようにすると、効果あるかもしれません。
お礼
代理サーバーは合理的ですね。ハードウェアなど環境があるならぜひ検討したいです。将来的に考えてみたいです。アドバイスありがとうございます。
- superside0
- ベストアンサー率64% (461/714)
問題の切り分けが必要でしょうけど、 XML生成自体が重い場合→XML生成環境の見直し(サーバーアプリの速度改善やサーバーの高速化) XML転送が遅い場合→サーバーの移転。 XMLの転送量が多い場合→XML生成をケース分けしてそのケースの必要最小限のデータのみにする。 その上でも3G回線速度のみが問題になるなら→アプリ側で同じXMLを何度もリクエストしないようにキャッシュする。 アプリによっては逆に細切れでリクエストしないで、予測されるデータを一括で先読みしておく。 って感じでしょうか。 ちなみに、「Androidを開発」でなく、「Androidのアプリを開発」ですね。
お礼
アドバイスありがとうござます。サーバー側のリソースは変更がきかない状態なので、androidのアプリ側で対応するしかないのですが、requestの回数は極限まで減らす前提ですね。xmlパースロジックやコネクション部分でrequest・responseを効率よく送受信する方法を探るしかない状況です。(><)android版ヤフオクなどが3Gでもかなり快速にうごくので、とても不思議です。やはり、サーバーのスペックが良いからなのですかね。。質問名訂正のご指摘もありたとうございます、たしかにおかいしですね。
お礼
バージョン管理は知らなかったです。androidの通信アプリでは一般的によくつかわれる手法なのですか。今回はオークションのような一般顧客がずいじデータを更新するアプリなので、常に更新されたxmlを取得することになりそうなので、難しそうですが、このやり方はかなり合理的で良いと感じました。次回はぜひこの手法をやってみたいです。アドバイス助かります。ありがとうございます。