1

I am attempting to use Restlet for Android to query an OData data source. However, I am not impressed with its performance in both the emulator as well on a real device. I have the requests made in a wrapper AsyncTask to make the UI responsive but it still takes over 1 minute to finally return the objects.

I get plenty of these in the LogCat window:

10-04 18:20:41.667: DEBUG/dalvikvm(278): GC freed 7872 objects / 523928 bytes in 279ms

What can I do to speed up the queries?

4

2 に答える 2

4

odata4j を確認してください - http://odata4j.org これは、Android 互換のクライアント API を含む、Java 用の代替 odata ライブラリです。

0.3 リリースで単純な Android クライアントの例をリリースしました。この例は、任意の odata サービスを解析/ページングする効率的な方法を示しています。

サービス主導のページング (Alex が言及) とともに、効率的な xml プル パーサーの実装を使用して odata ペイロードを解析します (ヒープ アクティビティ/GC が Android の最大のパフォーマンス ボトルネックであることがわかりました)。

于 2010-10-17T21:27:32.627 に答える
0

これがRESTletライブラリのパフォーマンスに役立たないことは知っています...しかし:

考慮すべきことの 1 つは、 Service Driven Pagingと呼ばれるものを使用することです。これは $top や $skip (別名クライアント主導のページング) とは異なることに注意してください。クライアントが要求しなくてもサーバーはページングするからです。

SDP は、クライアントが大規模なデータ セットに対してフィルター処理されていないクエリを実行する場合に特に役立ちます。

そうすれば、おそらくその 7872 の数値をより管理しやすい数値に下げることができます。

于 2010-10-05T15:20:13.070 に答える