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 回答