2

我希望有一个应用程序在给定的时间间隔(例如 5 秒)内重复执行 HTTP GET 请求并使用响应更新某些内容(例如视图标签)。但这应该独立于用户正在做的事情而运行。这样做的适当方法是什么?我目前唯一的想法是创建一个执行此操作的类,并让视图控制器将此类用作委托。但是,我对 iOS 还很陌生,我怀疑我是否会以正确的方式解决这个问题。有什么建议么?感谢!

4

2 回答 2

3

使用 NSTimer:

[NSTimer scheduledTimerWithTimeInterval:5.0
                                 target:self
                               selector:@selector(HTTPRequest:)
                               userInfo:nil
                                repeats:YES];

这将每 5.0 秒调用一次 HTTPRequest 方法。

于 2013-10-04T18:28:34.950 回答
2

在给定的时间间隔内重复...将执行 HTTP GET 请求并更新

这称为轮询,您应该尽可能避免这种情况。避免这种情况的最佳方法之一是让服务器在发生变化时告诉您,而不是不断询问。这正是推送通知旨在促进的目的。通知将显着减少您的应用发出的网络请求数量,从而节省电池电量和用户的数据计划。

因此,如果您可以管理它,请使用推送通知而不是轮询。主要的例外是,如果您知道每次请求时要检索的内容都会发生变化,您无法自己计算新值,并且您知道用户实际上关心查看每个新值。

这应该独立于用户正在执行的操作

如果您对信息所做的唯一事情是更新显示,那么它真的不应该独立于用户正在执行的操作而运行。如果您每 5 秒发出一次此请求,那么用户每分钟执行 12 个不必要的请求,而不是查看请求的结果。我可以看到拥有一个始终具有可用当前信息的对象的吸引力,但在电池电量和数据传输方面存在实际成本。(它还会给您的服务器带来不必要的高负载。)

仅在用户可能使用数据时才获取数据要好得多。

于 2013-10-04T18:34:25.023 回答