簡介
目前該框架的使用已經很廣泛了碳想,那么在kotlin中具體是怎么實現(xiàn)的呢盏筐,下面介紹下對其的封裝座泳,代碼Github地址
項目依賴
implementation 'com.squareup.okhttp3:okhttp:3.8.1'
implementation 'com.squareup.okhttp3:logging-interceptor:3.8.1'
// retrofit
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
//gson
implementation 'com.google.code.gson:gson:2.8.1'
implementation 是android studio 3.0 里 依賴 的gradle 版本語法诞仓。相當于之前的 compile
ServiceFactory代碼
用object 聲明單例類 ServiceFactory蛇损, getLogInterceptor函數(shù)獲取Http 日志攔截器赁温,serviceActivity 通過懶加載機制 在被第一次使用的時候初始化,通過createRetrofitService函數(shù)創(chuàng)建并賦值淤齐。
ServiceActivity 代碼
通過依賴注入的方式實現(xiàn)接口的聲明股囊,@POST聲明post接口,@Body 為請求體更啄。寫法與java基本一致
ActivitySource代碼
這里可以看到封裝的較為復雜稚疹,它實現(xiàn)了 在java中的 CallBack 回掉,和相當于該方法的遞歸實現(xiàn)祭务。詳細解釋下:
三個參數(shù):
1. ?paramActivityList 這個就是個普通類内狗,跟java沒什么區(qū)別
2. ?success 這是個方法參數(shù),方法參數(shù)還包含了兩個參數(shù)义锥,一個是正常接口返回ResultActivityList柳沙,二個是Retry方法參數(shù)是用來重復調用該方法的,這里是為了在頁面給用戶彈出重試按鈕的時候拌倍,重新請求該接口的實現(xiàn)偎行。
3. fail 這個參數(shù)實現(xiàn)的原理同上
調用
下面這個圖: 我不知道我要表達的意思 你看明白沒,就是在getActivityList 實現(xiàn) retry函數(shù)贰拿,在別處調用的時候 可以 主動調用 retry函數(shù) 來實現(xiàn) 該函數(shù)的 一次遞歸蛤袒。
總結
你也看到,在kotlin語言中 對于callBack的返回 完全不用定義接口膨更,而且還可以實現(xiàn)更復雜的一次遞歸操作妙真,這完全由于kotlin語言的特性才能實現(xiàn),如果在java中實現(xiàn)同樣的功能 真不知道要寫多少代碼荚守,對吧珍德,不信,你去試試矗漾。本次就學到這锈候,下期再見。