AFN 3.0學習總結(九)

參考:AFNetworking 3.0 源碼解讀(九)之 AFNetworkActivityIndicatorManager

說明:很多內(nèi)容都是摘抄原文,只是根據(jù)自己的需要進行摘抄或者總結,如有不妥請及時指出,謝謝。

AFNetworkActivityIndicatorManager 是對狀態(tài)欄中網(wǎng)絡激活那個小控件的管理。在平時的開發(fā)中,我們很可能忽略了它的存在。然而,實現(xiàn)對它的管理,讓我們的APP更符合人機交互,不也是件大快人心的事兒嗎??聪逻呥@張圖片就明白了:

image
// 這個宏的意思指下邊的類不能被擴展
NS_EXTENSION_UNAVAILABLE_IOS("Use view controller based solutions where appropriate instead.")

AFNetworkActivityManagerState

激活的四種狀態(tài)

typedef NS_ENUM(NSInteger, AFNetworkActivityManagerState) {
AFNetworkActivityManagerStateNotActive,   // 未激活
AFNetworkActivityManagerStateDelayingStart,  //激活前的延時階段
AFNetworkActivityManagerStateActive,    // 激活
AFNetworkActivityManagerStateDelayingEnd  // 取消階段
};

鎖的補充

synchronized是一種鎖,這種鎖不管是在oc中還是java中用的都挺多的,而且這種鎖鎖得是對象。具體原理,可以看這篇文章后邊的 參考 那一部分。
總結一下,鎖一般用于多線程環(huán)境下對數(shù)據(jù)的操作中。在 AFNetworking 中我們見到了3種不同的鎖,分別是:
1、NSLock

image

2、dispatch_semaphore_wait

image

3、@synchronized

  1. image

總結

說一下整個流程吧:

1、當收到 AFNetworking 的AFNetworkingTaskDidResumeNotification通知后,調(diào)用incrementActivityCount方法。
2、在incrementActivityCount方法中把激活數(shù)+1,然后調(diào)用updateCurrentStateForNetworkActivityChange方法更新當前的狀態(tài)。
3、在updateCurrentStateForNetworkActivityChange方法中會設置當前的狀態(tài),也就是調(diào)用setCurrentState:方法。
4、在setCurrentState:方法中通過當前的狀態(tài),來開啟或者關閉定時器,然后調(diào)用setNetworkActivityIndicatorVisible:方法。
5、在setNetworkActivityIndicatorVisible:方法中設置激活狀態(tài)。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,872評論 25 709
  • Java8張圖 11、字符串不變性 12、equals()方法、hashCode()方法的區(qū)別 13、...
    Miley_MOJIE閱讀 3,894評論 0 11
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內(nèi)部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,637評論 18 399
  • 上了大學以后就不知道怎么讀書。 我看現(xiàn)代文學,里面透著一股酸氣,想罷不值得一看。高中時我看雜志,除了搜刮來的議...
    我的閱讀量閱讀 206評論 1 3
  • 最近做公司項目,使用到到tableHeadView,一直習慣用masonry來設置約束,但是設置tableHead...
    Kevin追夢先生閱讀 3,222評論 1 1

友情鏈接更多精彩內(nèi)容