iOS:基于网络连接使用活动指标的规则是什么?

时间:2013-01-26 16:24:43

标签: ios

在开发iPhone应用程序之前,我认为只要iPhone正在进行网络访问,就会启动Activity Indicator。 既然我正在学习制作应用程序,我明白情况并非如此。网络活动指示器仅在我们决定使其显示时出现,即使根本没有网络。

如果我错了就停止我。

如果我不是,有没有办法确定我的应用程序是否正在使用该网络?

我正在做一个基于Evernote SDK的应用程序,当我启动Evernote创建时,我没有使用任何NSURLConnection或类似的东西,我不能确定它是下载还是上传内容。我什么时候应该开始活动指标?什么时候应该阻止它?

有规则吗?有标准方法可以知道吗?

由于

2 个答案:

答案 0 :(得分:4)

您的应用不应试图“确定网络是否被使用”,而应该将显示指标的行为与行动联系起来。例如,当您启动网络操作时,您将显示它,并且当调用网络操作的完成或错误回调时,您将其隐藏。当然,如果您正在执行多个并行操作,那么您需要计算活动操作的数量。像这样:

int nNetworkOps = 0;

- (void)startNetworkingOperation
{
    nNetworkOps++;
    [[UIApplication sharedApplication] setNetworkActivityIndicatorEnabled:YES];

    [NSURLConnection sendAsynchronousRequest:rq queue:q completionHandler:^(NSURLResponse *resp, NSData *d, NSError *e) {
        [self anOpHasFinished];
    }];
}

- (void)anOpHasFinished
{
    if (--nNetworkOps == 0) {
        // hide the activity indicator
        // You have to do this on the main thread
        // (left to you as an exercise)
    }
}

答案 1 :(得分:1)

关于活动指标的使用没有严格的规定。您应该使用指示器告诉用户实际上在后台发生的事情。

例如,如果您正在创建需要使用某些Web服务进行搜索的应用程序,则用户输入关键字并按下按钮,在那里您联系服务器,服务器返回结果,并显示带有搜索结果的新视图。当您点击搜索按钮时,请注意,如果您没有显示活动指示,用户可能会认为没有执行搜索,他会尝试再按几次,直到他变得紧张并关闭我们的应用程序。如果我们显示活动指示器,用户将知道搜索在后台执行,他将耐心等待,他将等待结果。

在某些情况下,您可以进行网络通信,但不显示活动指示符。例如,在每个位置更新时将gps位置发送到服务器的应用程序。在这里,您不希望用户知道何时发生网络通信,因为这是不必要的,并且可能在此期间变得令人沮丧。