天天看點

如何用Kotlin實作MVP架構的Android快速開發架構?

前言

自谷歌官方将Kotlin設定為官方語言以來,越來越多的人開始投入Kotlin的學習,前不久還有朋友問我Kotlin要怎麼學。

這些天,我也一直在思考這個問題。這裡就給大家分享一個項目,教大家如何用Kotlin實作MVP架構的Android快速開發架構?

簡介

  • KCommon快速開發架構是基于rxjava、rxcache、okhttp、retrofit、rxlifecycle等第三方庫,采用mvp架構,使用kotlin語言開發的一個第三方庫,配合一鍵生成mvp相關代碼檔案的Android Studio模闆檔案,可以使使用者快速開發,專注于代碼邏輯,而非mvp相關的繁瑣配置。并且內建了Loading、成功、失敗和空頁面的切換,同時還提供了對下拉重新整理以及上拉加載更多的清單的模闆(BaseRefreshAndLoadMoreActivity||BaseRefreshAndLoadMoreFragment),省去了Android開發人員對相同類型代碼的重複編寫。Github位址
  • 使用此開發架構需要的一些前置知識
    • 熟悉android中的mvp架構
    • 熟悉rxjava、rxcache、rxlifecycle等響應式程式設計架構
    • 熟悉okhttp、retrofit
    • 會複制快速開發模闆到指定位置并使用
  • KCommon提供了兩種便于開發的模闆
    • 以Base開頭的BaseActivity和BaseFragment。這種适合通用的開發。具體的使用請參考相關的demo。
    • 以BaseRefreshAndLoadMore開頭的BaseRefreshAndLoadMoreActivity和BaseRefreshAndLoadMoreFragment。這種适合清單展示的頁面開發,具備下拉重新整理和上拉加載更多資料的功能。具體的使用請參考相關的demo。
    • kotlin版本的demo java版本的demo

圖檔展示

  • 總的示範
  • 下拉重新整理和上拉加載更多
  • 空頁面
如何用Kotlin實作MVP架構的Android快速開發架構?
  • 在斷網情況下加載緩存
  • 網絡請求錯誤并重新加載

基于Kotlin的使用說明(Java的使用具體參考java版本的demo)

  • 導入依賴
    • 在根目錄中的build.gradle檔案中加入
    maven { url "https://jitpack.io" }
               
    • 在應用下的build.gradle檔案中加入
  • 在自定義的Application類中的onCreate方法中初始化CommonLibrary

//初始化KCommon

CommonLibrary.instance.initLibrary(this,

BuildConfig.APP_URL,
            ApiService::class.java,
            CacheService::class.java)
           
* 建議配合一鍵生成相關MVP類的Android Studio模闆進行開發,可極大提高開發效率。模闆位置 [Android Studio 快速開發模闆](https://github.com/BlackFlagBin/KCommonTemplate)

### 詳細說明
* CommonLibrary.instance.initLibrary()
           
/**
 * 初始化
 *
 * @param context Application
 * @param baseUrl retrofit所需的baseUrl
 * @param apiClass retrofit使用的ApisService::Class.java
 * @param cacheClass rxcache使用的CacheService::Class.java
 * @param spName Sharedpreference檔案名稱
 * @param isDebug 是debug環境還是release環境。debug環境有網絡請求的日志,release反之
 * @param startPage 分頁清單的起始頁,有可能是0,或者是2,這個看背景
 * @param pageSize 分頁大小
 * @param headerMap 網絡請求頭的map集合,便于在網絡請求添加統一的請求頭,比如token之類
 * @param errorHandleMap 錯誤處理的map集合,便于針對相關網絡請求傳回的錯誤碼來做相應的處理,比如錯誤碼401,token失效需要重新登入
 * @param onPageCreateListener 對應頁面activity或fragment相關生命周期的回調,便于在頁面相關時機做一些統一處理,比如加入友盟統計需要在所有頁面的相關生命周期加入一些處理
 * @param onPageDestroyListener 對應頁面activity或fragment相關生命周期的回調,便于在頁面相關時機做一些統一處理,比如加入友盟統計需要在所有頁面的相關生命周期加入一些處理
 * @param onPageResumeListener 對應頁面activity或fragment相關生命周期的回調,便于在頁面相關時機做一些統一處理,比如加入友盟統計需要在所有頁面的相關生命周期加入一些處理
 * @param onPagePauseListener 對應頁面activity或fragment相關生命周期的回調,便于在頁面相關時機做一些統一處理,比如加入友盟統計需要在所有頁面的相關生命周期加入一些處理
 *
 */
fun initLibrary(
        context: Application,
        baseUrl: String,
        apiClass: Class<*>,
        cacheClass: Class<*>,
        spName: String = "kcommon",
        isDebug: Boolean = true,
           

作者:BlackFlagBin

原文位址:https://segmentfault.com/a/1190000014387119?utm_source=sf-related

該項目作者最近還有維護,雖然還存在一些問題,但是對很多人來說還是有很多值得學習的地方。感興趣的朋友可以深入鑽研一下。

以上就是本次的Kotlin項目實戰分享,下面我想帶給大家的是由國外某大佬整理出來的

Kotlin學習手冊

《kotlin 從入門到精通》。
這個手冊,内容深入淺出,把知識點進行了詳細的拆分講解,非常适合作為新手入門的第一份資料。檔案免費分享,需要的朋友記得**點贊+留言,然後點選這裡的藍色字型進入我的GitHub,**裡面有領取通道。

目錄

  • 準備開始
  • 基礎
  • 類和對象
  • 函數和lambda表達式
  • 互用性
  • 工具
  • FAQ
  • ……
    如何用Kotlin實作MVP架構的Android快速開發架構?

準備開始

  • 基本文法
  • 習慣用語
  • 編碼風格
  • ……
    如何用Kotlin實作MVP架構的Android快速開發架構?

基礎

  • 基本類型
  • 控制流
  • 傳回與跳轉
  • ……
    如何用Kotlin實作MVP架構的Android快速開發架構?

類和對象

  • 類和繼承
  • 屬性和字段
  • 接口
  • 可見性修飾詞
  • 擴充
  • 資料對象
  • 泛型
  • 嵌套類
  • 枚舉類
  • 對象表達式和聲明
  • 代理模式
  • 代理屬性
  • ……
    如何用Kotlin實作MVP架構的Android快速開發架構?

函數和lambda表達式

  • 函數
  • 進階函數和lambda表達式
  • 内聯函數
  • ……
    如何用Kotlin實作MVP架構的Android快速開發架構?

互用性

  • 動态類型
  • ……
    如何用Kotlin實作MVP架構的Android快速開發架構?

工具

  • Kotlin代碼文檔
  • 使用Maven
  • 使用Ant
  • 使用Griffon
  • 使用Gradle
  • ……
    如何用Kotlin實作MVP架構的Android快速開發架構?

FAQ

  • 與 java 的對比
  • 與 Scala 對比
  • ……
    如何用Kotlin實作MVP架構的Android快速開發架構?
這個手冊,内容深入淺出,把知識點進行了詳細的拆分講解,非常适合作為新手入門的第一份資料。檔案免費分享,需要的朋友記得**點贊+留言,然後點選這裡的藍色字型進入我的GitHub,**裡面有領取通道。