我知道的奇怪问题。我正在为ios开发一个应用程序,用于作为商业中心访客的目标。该应用程序使用xml系统提供内部更新系统,在网络响应缓慢或快速的情况下,由于一长串原因,这些系统的工作方式不同。区别在于ui的不同类型的故障,并且我只能选择在用户具有慢速连接或快速连接的情况下具有更好的性能,对于两种解决方案(一种用于快速情况下的问题,对于我所遇到的问题,一个用于缓慢的情况),涉及一个在另一个案例中存在故障。 在这种情况下,我应该支持属于快速或慢速连接的用户以及为什么?
编辑:我会尝试解释这个问题。我有一个需要通过xml更新的视图。当我启动视图时,我尝试访问xml以控制是否需要更新的简单事实需要时间。我添加了一个活动指示器,但它不能正常工作,因为网络变慢,似乎需要更多时间来显示活动指示器,结果用户必须时间认为应用程序被冻结,请尝试触摸按钮,他没有触摸(这将无法工作,让他认为应用程序不起作用)等等。所以我使用performSelectorInBackground来尽可能快地添加活动指示器,它在SLOW连接情况下工作正常。在FAST连接的情况下,活动看起来如此之快以至于即使控件是否必须完成更新,由于连接的速度,也几乎没有时间,导致它显示皮秒的活动指示器,给出一个可怕的图形效果,应该避免。为了避免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(我猜)的执行减慢了活动指示器的显示太多,导致给人的印象是应用程序冻结。所以我的双手被束缚,我不知道它更喜欢什么。
答案 0 :(得分:2)
您可以确定用户的连接类型(Edge / 3G或Wi-Fi),并为每种类型的连接执行不同的方法。示例代码here。通常Wi-Fi更快更便宜,因此您可以提供快速代码"为了它。
P.S。我还不确定你在说什么。演出内容吗?没有一些细节很难给出适当的建议,但仍然:
1)您可以在后台下载所需的内容。
2)如果它涉及带有图像/视频/音乐的菜单 - 从下载带有标题的列表开始,然后下载媒体文件。 (就像安卓市场在缓慢的连接上做的那样)。
编辑: 首先,不要混合视图和网络任务。所有下载都应该在ViewController之外的另一个线程中完成。 您可以每N分钟下载新XML(或在请求中使用if-modified),并在用户下次尝试查看视图时显示。您多久获得一次新的XML?这很重要,也许你可以避免在UI绘制的同时下载它。祝好运!
答案 1 :(得分:1)
由于目标是商业中心的访客,您应始终使用快速连接以提供更好的用户体验..用户不喜欢在设备上加载屏幕等待很长时间..但您还应该解决负面情况,即连接速度慢。您需要根据需要确定优化时间,这样您才需要显示该特定时间的加载屏幕,如果连接速度很慢,您可以使用“再试一次”消息终止连接。