0

我知道的奇怪问题。我正在为 ios 开发一个应用程序,目标是商业中心的访客。该应用程序提供了一个内部更新系统,使用 xml 系统,由于一长串原因,在网络响应缓慢或快速的情况下,该系统的工作方式不同。不同之处在于 ui 的故障类型不同,我只能在用户连接速度较慢或连接速度较快的情况下选择具有更好性能的两种解决方案(一种用于快速情况下的问题,一个用于慢速案例)对于我遇到的问题,其中一个涉及在另一种情况下存在故障。在这种情况下,我应该偏爱属于快速或慢速连接的用户,为什么?

编辑:我会试着解释这个问题。我有一个需要通过 xml 更新的视图。当我启动视图时,我尝试访问 xml 以控制是否需要完成更新这一简单事实需要时间。我添加了一个活动指示器,但它不能正常工作,随着网络变慢,活动指示器似乎需要更多时间才能显示,结果用户不得不时间认为应用程序被冻结,尝试触摸他不必触摸的按钮(这将不起作用并使他认为该应用程序不起作用)等等。所以我使用 performSelectorInBackground 以尽可能快地添加活动指示器,它在 SLOW 连接情况下工作正常。在快速连接的情况下,活动出现得如此之快,即使控制是否必须完成更新,由于连接的速度,几乎不需要时间,导致它显示一皮秒的活动指示器,从而产生可怕的图形效果,这是要避免的。为了避免 FAST 案例中的问题,我添加了一个

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.000001 * NSEC_PER_SEC), dispatch_get_current_queue(), ^{ code to add the activity indicator; });

并且,通过这种方式,我没有 FAST 情况下的图形问题,但在 SLOW 情况下,dispatch_after 的执行(我猜)会减慢活动指示器的显示速度,从而导致应用程序冻结的印象。所以我的双手被束缚,我不知道它更喜欢什么。

4

2 回答 2

2

您可以确定用户的连接类型(Edge/3G 或 Wi-Fi),并对每种连接类型执行不同的方法。示例代码在这里。通常 wi-fi 更快更便宜,因此您可以为其提供“快速代码”。

PS我仍然不确定你在说什么。性能?没有一些细节很难给出适当的建议,但仍然:

1)您可以在后台下载所需的东西。

2) 如果是关于带有图像/视频/音乐的菜单 - 从下载带有标题的列表开始,然后下载媒体文件。(就像 android 市场在慢速连接上所做的那样)。

编辑:首先,不要混合视图和网络任务。所有下载都应该在 ViewController 之外的另一个线程中完成。您可以每 N 分钟下载一次新的 XML(或在您的请求中使用 if-modified)并在下次用户尝试查看视图时显示它。您多久获得一次新的 XML?这很重要,也许您可​​以避免与UI绘图同时下载它。祝你好运!

于 2013-05-14T10:52:57.813 回答
1

由于目标是商业中心的访客,您应该始终使用快速连接以提供更好的用户体验..用户不喜欢在设备上等待很长时间的加载屏幕..但您还应该解决负面情况,即慢速连接。您需要根据要求确定优化时间,以便仅显示该特定时间的加载屏幕,如果连接速度很慢,您可以使用“再试一次”消息终止连接。

于 2013-05-14T12:43:27.893 回答