天天看點

MVP+Retrofit+RxJava+Okhttp構造一個合格的Android架構MVP+Retrofit+RxJava+Okhttp構造一個合格的Android架構

MVP+Retrofit+RxJava+Okhttp構造一個合格的Android架構

寫在前面

現在的Android開發需求,是一個快速開發的模式,大部分App都是便捷開發,項目要求1,2個月内就要出來,造成開發者對App本身結構穩定性,層次分明,可拓展性,解耦考慮不全。不過這也是目前市場的一個普遍現象了啦。除了大公司使用者量很大的那些App必須考慮這些問題以外,因為本來Android就是一個重量級語言,本身就是一個mvc的開發模式,是以其它小型公司倒不至于去考濾一個穩定的架構問題。但是随着公司的壯大,使用者量的增多,不得不重構設計一個穩定易拓展的架構。
别的不多說,有點忙,先不寫實作思路了,先上項目位址,其實代碼裡面我的注釋都很清楚的!
           

https://github.com/KellenHu/MvpRxRetrofit

本架構是利用目前次新的Android技術組合而成,架構内部大緻實作了如下功能,作用:
           

- 利用Mvp系統架構設計模式使得層次分明

- 結構的分層使得代碼本身從架構層面降低了耦合性

- 可拓展

- 快速疊代

- 業務邏輯和UI邏輯徹底隔離

- API實作配置化管理

- Logcat配置化管理

- Rxjava鍊式調用使代碼更簡潔易讀

- 結合Retrofit從配置層面實作斷網環境下的資料緩存與讀取

- Glide加載圖檔,這是谷歌官方推薦的圖檔加載工具

- 引入道友的PhotoView,圖檔縮放,大圖檢視

- 工具子產品中預置了一些常用的工具

本架構的源碼會在文章最後放出來,但是希望道友還是不要直接下源碼,先把本文實作思路浏覽一遍,這樣了解源碼的結構更容易。
           

開始動手

基礎mvp架構命名為mvp_base_frame

MVP+Retrofit+RxJava+Okhttp構造一個合格的Android架構MVP+Retrofit+RxJava+Okhttp構造一個合格的Android架構
ok,基礎層面的mvp架構“檔案夾”建立完成,接下來看我在裡面搞些什麼(别亂想,我是往裡建立class)
既然是mvp,建立m(model),v(view),p(presenter)
           
MVP+Retrofit+RxJava+Okhttp構造一個合格的Android架構MVP+Retrofit+RxJava+Okhttp構造一個合格的Android架構
  • 包建好之後,填東西了哦。首先model
首先,建立一個Imodel 類型是interface,至于為啥是interface,不可能你一個項目的最底層你會用class吧,不管是從解耦還是軟體設計角度來想,我就不多解釋了
  • view
view層是針對視圖設計的一個基類,具體看我代碼
  • presenter(關于這個單詞的意思一直有很多不同的了解,有些人從字面上了解為主持人,說得過去,有些人了解成代理,也說得過去,總之,智者見智吧,不過多糾結)
在Android領域,說白了就是activity和fragment這兩種視窗,什麼popwindow,dialog,toast這些不在範圍内,我這裡搞個基礎的,隻為activity和fragment設計代理
上圖上圖 
           
MVP+Retrofit+RxJava+Okhttp構造一個合格的Android架構MVP+Retrofit+RxJava+Okhttp構造一個合格的Android架構
上兩個重要的檔案源碼吧,多的還是源碼觀摩

這裡寫代碼片

快捷鍵

  • 加粗

    Ctrl + B

  • 斜體

    Ctrl + I

  • 引用

    Ctrl + Q

  • 插傳入連結接

    Ctrl + L

  • 插入代碼

    Ctrl + K

  • 插入圖檔

    Ctrl + G

  • 提升标題

    Ctrl + H

  • 有序清單

    Ctrl + O

  • 無序清單

    Ctrl + U

  • 橫線

    Ctrl + R

  • 撤銷

    Ctrl + Z

  • 重做

    Ctrl + Y

Markdown及擴充

Markdown 是一種輕量級标記語言,它允許人們使用易讀易寫的純文字格式編寫文檔,然後轉換成格式豐富的HTML頁面。 —— [ 維基百科 ]

使用簡單的符号辨別不同的标題,将某些文字标記為粗體或者斜體,建立一個連結等,詳細文法參考幫助?。

本編輯器支援 Markdown Extra ,  擴充了很多好用的功能。具體請參考Github.

表格

Markdown Extra 表格文法:

項目 價格
Computer $1600
Phone $12
Pipe $1

可以使用冒号來定義對齊方式:

項目 價格 數量
Computer 1600 元 5
Phone 12 元 12
Pipe 1 元 234

定義清單

Markdown Extra 定義清單文法: 項目1 項目2
定義 A
定義 B
項目3
定義 C
定義 D
定義D内容

代碼塊

代碼塊文法遵循标準markdown代碼,例如:

@requires_authorization
def somefunc(param1='', param2=):
    '''A docstring'''
    if param1 > param2: # interesting
        print 'Greater'
    return (param2 - param1 + ) or None
class SomeClass:
    pass
>>> message = '''interpreter
... prompt'''
           

腳注

生成一個腳注1.

目錄

[TOC]

來生成目錄:

  • MVPRetrofitRxJavaOkhttp構造一個合格的Android架構
    • 寫在前面
    • 開始動手
    • 基礎mvp架構命名為mvp_base_frame
    • 快捷鍵
    • Markdown及擴充
      • 表格
      • 定義清單
      • 代碼塊
      • 腳注
      • 目錄
      • 數學公式
      • UML 圖
    • 離線寫部落格
    • 浏覽器相容

數學公式

使用MathJax渲染LaTex 數學公式,詳見math.stackexchange.com.

  • 行内公式,數學公式為: Γ(n)=(n−1)!∀n∈N 。
  • 塊級公式:

x=−b±b2−4ac−−−−−−−√2a

更多LaTex文法請參考 這兒.

UML 圖:

可以渲染序列圖:

或者流程圖:

  • 關于 序列圖 文法,參考 這兒,
  • 關于 流程圖 文法,參考 這兒.

離線寫部落格

即使使用者在沒有網絡的情況下,也可以通過本編輯器離線寫部落格(直接在曾經使用過的浏覽器中輸入write.blog.csdn.net/mdeditor即可。Markdown編輯器使用浏覽器離線存儲将内容儲存在本地。

使用者寫部落格的過程中,内容實時儲存在浏覽器緩存中,在使用者關閉浏覽器或者其它異常情況下,内容不會丢失。使用者再次打開浏覽器時,會顯示上次使用者正在編輯的沒有發表的内容。

部落格發表後,本地緩存将被删除。 

使用者可以選擇 把正在寫的部落格儲存到伺服器草稿箱,即使換浏覽器或者清除緩存,内容也不會丢失。

注意:雖然浏覽器存儲大部分時候都比較可靠,但為了您的資料安全,在聯網後,請務必及時發表或者儲存到伺服器草稿箱。

浏覽器相容

  1. 目前,本編輯器對Chrome浏覽器支援最為完整。建議大家使用較新版本的Chrome。
  2. IE9以下不支援
  3. IE9,10,11存在以下問題
    1. 不支援離線功能
    2. IE9不支援檔案導入導出
    3. IE10不支援拖拽檔案導入
  1. 這裡是 腳注 的 内容. ↩