這個(gè)Demo使用的是MVP架構(gòu)
既然要說MVP,那不得不提一下MVC
MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,是一種框架模式。
M表示單純的Bean模型
V表示View以及子類
C表示Activity、Fragment以及子類
使用實(shí)例的鏈接:https://github.com/meiyingxiang/AndroidMVPDemo
本篇主要說MVP所以就不在說MVC了
MVP全稱Model-View-Presenter,即模型-視圖-中介者
M表示數(shù)據(jù)層(數(shù)據(jù)庫、文件操作、網(wǎng)絡(luò))
V表示View、Activity以及Fragment及其子類
P表示Presenter中介者
MVP設(shè)計(jì)的目的將Ui層和數(shù)據(jù)層解耦合
流程圖如下:

我這里通過幾種方式一步步教你如何使用MVP
首先最原始的方式比如我們請(qǐng)求接口獲取數(shù)據(jù)

我這里使用的網(wǎng)絡(luò)框架是xUtils。
我們?cè)谶@個(gè)基礎(chǔ)上進(jìn)行優(yōu)化

然后數(shù)據(jù)通過接口回調(diào)出去

最后通過P層回調(diào)

這是一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)請(qǐng)求MVP模型,接下來我們繼續(xù)優(yōu)化,當(dāng)我們退出時(shí),但是網(wǎng)絡(luò)請(qǐng)求還在執(zhí)行程序,會(huì)繼續(xù)執(zhí)行回調(diào)這個(gè)時(shí)候我們需要在程序退出時(shí)執(zhí)行取消綁定于是就有了綁定attachView取消綁定detachView代碼如下:

接著我們可以把綁定和取消綁定放到基類


這樣P層的代碼會(huì)減少,邏輯也很清晰。還可以繼續(xù)優(yōu)化,高度抽象化


最后Activity和Fragment也可以做一個(gè)基類


最后在Activity里面使用


詳細(xì)的Demo鏈接如下: