0

Flex を使用してモバイル アプリを開発していますが、BlazeDS を使用していくつかの問題に遭遇しました。一部のユーザーは、サーバーから (比較的) かなり大量のデータを要求し、約 2 秒で返されます。データは、いくつかの非常に単純なオブジェクトで構成されています (名前/電話/電子メールを持つクライアントと、その他のいくつかのプロパティ。そのうちのいくつかは、より多くのプロパティを持つ他のネストされたオブジェクトです)。最大のリクエストは、これらのオブジェクトの約 10,000 個以下で構成され、サイズはわずか数 MB です。私が直面している問題は、サーバーが応答を送信するとすぐに、データの処理中にモバイル画面がロックされることです。10,000 個のオブジェクトの場合、これには数分かかる場合があり、場合によってはデバイスがクラッシュすることさえあります。平均的なユーザーの場合、少なくとも 2 ~ 5 秒間は画面がフリーズします。これは、機能が制限されたデバイスだけの問題ではありません。これは、私の PC (i5 プロセッサ、8GB RAM) でも発生します。私が知る限り、このダウンタイムは、デバイスが応答を受信して​​からデータにアクセスできるようになるまでのどこかで発生しています。次の RemoteObject 結果ハンドラーの最初の行にブレークポイントを設定すると、ブレークポイントに到達する前に画面がロックされます。

protected function myResultHandler(event:ResultEvent):void
{
    var result:ArrayCollection = event.result as ArrayCollection;
    //Do other stuff here
}

私は BlazeDS と AMF についてほとんど知らないので、唯一の推測では、デバイス上でオブジェクトが作成されている間にフリーズが発生するということです。このプロセスをスピードアップする方法はありますか? 通常、このような非常に低いパフォーマンスが見られると予想する必要がありますか? どんな助けでも大歓迎です。

4

1 に答える 1

0

数時間掘り下げた後、問題の解決策を見つけました。サーバー側では、送信していたオブジェクトに、モバイルアプリで必要な情報とは無関係の無関係なプロパティが大量に含まれていました。さらに、これらのクラスにはgetMyHelper()、Flex 側でプロパティを生成しようとするヘルパー メソッドがフォーム内にありました。これにより、AS オブジェクトにこれらの名前のプロパティが存在しないため、ダウンロード中に参照エラーの膨大なリストがスローされました。追加のプロパティやメソッドを使用せずに、送信する必要のあるオブジェクトの簡易バージョンを作成しました。サーバーからの応答を受信した後、大量のリストがほぼ瞬時に表示されるようになりました。

于 2013-01-23T18:25:56.243 に答える