ソースコードの読み取り:AFNetworking(10)-AFNetworkActivityIndi​​catorManager



Source Code Reading Afnetworking Afnetworkactivityindicatormanager



記事が読んでいるAFNetworkingのバージョンは3.2.0です。

このクラスは、ネットワーク要求時にステータスバーの左上隅のローテーションを制御するネットワークアクティビティインジケータの表示と非表示です。



コードを読んだ後、それを整理することができます。AFNetworkActivityIndicatorManagerクラスワークフロー:

  • ネットワークアクティビティインジケータを表示する

1.通知リスナーを初期化メソッドAFNetworking of task開始、一時停止、および終了に登録します。



2.受信時task通知が開始されると、現在のネットワーク要求アクティビティ番号が通知コールバックメソッドに記録され、KOVが手動で送信されてから、ステータス更新メソッドが呼び出されます。

3.ステータス更新方式では、現在のステータスが非アクティブで、ネットワーク要求アクティビティがある場合、現在のステータスは遅延開始ステータスに設定されます。

In currentState属性のセッターでは、KVOが最初に手動で送信されます。設定状態が開始遅延状態であることが判明した場合、開始遅延タイマーがオンになります。



5.タイマーメソッドは1秒後にトリガーされます。タイマー方式では、進行中のネットワーク要求がまだあることが判明した場合、現在の状態がアクティブ状態に設定されます。ただし、進行中のネットワークリクエストがない場合、ステータスは非アクティブに設定されます。

6.次に、書き換えに戻りましたcurrentState属性のセッターで、KVOは引き続き手動で送信されます。設定状態が開始状態であることが判明した場合、完了遅延タイマーが終了し、ネットワークアクティビティインジケータが表示されます。

  • ネットワークアクティビティインジケータを非表示にする

7.受信時task通知の最後に、同じ数の現在のネットワーク要求アクティビティが通知コールバックメソッドに記録され、KOVが手動で送信されてから、ステータス更新メソッドが呼び出されます。

8.ステータスの更新方法では、現在のステータスがアクティブで、進行中のネットワーク要求がない場合、現在のステータスは遅延ステータスの終了に設定されます。

9.書き換え時currentState属性セッターでは、手動でKVOを送信するほか、設定状態が遅延終了状態であることが判明した場合、完了遅延タイマーがオンになります。

10. 0.17秒後、timerメソッドがトリガーされ、timerメソッドが状態を非アクティブに設定します。currentStateセッターで、最初に手動でKVOを送信し、非アクティブ状態で、開始および終了遅延タイマーを終了します。 、およびネットワークアクティビティインジケータを非表示にします。

ソースコード読み取りシリーズ:AFNetworking

ソースコードの読み取り:AFNetworking(a)-使用を開始します

ソースコードの読み取り:AFNetworking(two)-AFURLRequestSerialization

ソースコードの読み取り:AFNetworking(3)-AFURLResponseSerialization

ソースコードの読み取り:AFNetworking(4)-AFSecurityPolicy

ソースコードの読み取り:AFNetworking(5)-AFNetworkReachabilityManager

ソースコードの読み取り:AFNetworking(6)-AFURLSessionManager

ソースコードの読み取り:AFNetworking(7)-AFHTTPSessionManager

ソースコードの読み取り:AFNetworking(8)-AFAutoPurgingImageCache

ソースコードの読み取り:AFNetworking(9)-AFImageDownloader

ソースコードの読み取り:AFNetworking(10)-AFNetworkActivityIndi​​catorManager

ソースコードの読み取り:AFNetworking(11)-UIActivityIndi​​catorView + AFNetworking

ソースコードの読み取り:AFNetworking(12)-UIButton + AFNetworking

ソースコードの読み取り:AFNetworking(13)-UIImageView + AFNetworking

ソースコードの読み取り:AFNetworking(14)-UIProgressView + AFNetworking

ソースコードの読み取り:AFNetworking(15)-UIRefreshControl + AFNetworking

ソースコードの読み取り:AFNetworking(16)-UIWebView + AFNetworking