1

iPhoneアプリケーションを開発する前は、iPhoneがネットワークアクセスを行っているときはいつでも、アクティビティインジケータを開始すると思いました。アプリケーションの作成を学んでいるので、そうではないことを理解しています。ネットワークアクティビティインジケータは、ネットワークがまったくない場合でも、表示することを決定した場合にのみ表示されます。

私が間違っているなら、ただ私を止めてください。

そうでない場合、ネットワークがアプリケーションで使用されているかどうかを確認する方法はありますか?

Evernote SDKをベースにしたアプリを作成していますが、Evernoteの作成を開始したとき、NSURLConnectionなどを使用しておらず、ダウンロードかアップロードかがわかりません。アクティビティインジケーターはいつ開始する必要がありますか?そしていつ私はそれをやめるべきですか?

ルールはありますか?それを知るための標準的な方法はありますか?

ありがとう

4

2 に答える 2

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)
    }
}
于 2013-01-26T16:39:31.840 に答える
1

アクティビティインジケーターの使用に関する厳密なルールはありません。インジケーターを使用して、実際にバックグラウンドで何かが発生していることをユーザーに通知する必要があります。

たとえば、Webサービスを使用して検索する必要のあるアプリを作成している場合、ユーザーがキーワードを入力してボタンを押すと、サーバーに接続し、サーバーが結果を返し、検索結果を含む新しいビューが表示されます。検索ボタンをタップした瞬間に注意してください。アクティビティインジケーターを表示しないと、ユーザーは検索が実行されていないと思われる可能性があり、緊張してアプリを閉じるまで、さらに数回押しようとします。アクティビティインジケーターを表示すると、ユーザーは検索がバックグラウンドで実行されていることを認識し、辛抱強く結果を待ちます。

ネットワーク通信があるが、アクティビティインジケータを表示しないシナリオがいくつかあります。たとえば、位置情報が更新されるたびに、gps位置情報をサーバーに送信するアプリケーション。ここでは、ネットワーク通信がいつ発生するかをユーザーに知らせたくありません。これは、ネットワーク通信が不要であり、その間にイライラする可能性があるためです。

于 2013-01-26T16:44:25.580 に答える