Mvp架構+Retrofit+rxjava2+Glide 實現網絡圖片加載

最近寫了一份demo,整理了下最近使用的框架,首先介紹下體系唄:

Mvp:一種衍生於mvc的設計模式,比mvc的優點好處在於m跟v分離的明確,m只負責data,v只負責view顯示,p負責獲取data給v進行顯示。當然現在有更好的mvvm設計模式,mvp只屬於mvvm的一箇中間版,但是對於正常的項目應用是夠用了,筆者對於mvvm的使用較少,等有空的時候會多研究下。

 

Retrofit+rxjava2:爲啥不用okgo或者okhttp,他們的作者是相同的,可能是因爲retrofit一直在更新的原因吧。。。Okhttp已經2年沒更新了,retrofit用的更廣泛,遇到問題解決起來可能也會更方便,在數據安全上也更有保障。

 

Glide:近幾年挺火的一款圖片加載框架,優點在於可以緩存跟預加載。

 

先來說下mvp框架吧:

具體代碼如下:

public interface SearchContract {
   
interface View extends BaseView<SearchContract.Presenter> {
       
void showImageInfo(List<ImageBean.ListBean> list);
   
}

   
interface Presenter extends BasePresenter {
       
void loadImageInfo(String location);
   
}
}

 

可以看到 我們創建了一個關聯類,View跟presenter,分別對應mvp中的v跟p,用我們的Activity或者fragment 來實現view,然後p來實現定義好的presenter。

相關實現如下:

P:

public class SearchPresenter implements SearchContract.Presenter {

    private static final String TAG = SearchPresenter.class.getSimpleName();

    private Context mContext;

    private SearchContract.View mSearchView;

    private WorkRepositoryImpl mWork;

    private String mLocation;



    public SearchPresenter(Context context, SearchContract.View view, String location) {

        mContext = context;

        mSearchView = view;

        mLocation = location;

        mWork = WorkRepositoryImpl.getInstance();

    }

 

v:

public class SearchActivity extends BaseActivity implements SearchContract.View {
@Override

public void showImageInfo(List<ImageBean.ListBean> beanList) {

   }
}

 

好了 這樣我們mvp體系已經搭建完畢,在p中可以進行數據交互,把從服務器獲取的數據或本地數據庫獲取的數據傳遞給view進行使用,view只負責顯示,數據的獲取一定要在p中進行哦,否則就是mvc了。。。

總結:與mvc相比,mvp通過p把v跟m分離,使代碼更清晰,比如數據方面出了問題,直接去找m,界面出了問題直接去找v,這樣定位問題,解決問題會更加效率。

 

 

隨後,我們來講下retrofit+rxjava2

老規矩先上代碼:

/**

 * 初始化Retrofit

 */

public Api initRetrofit() {

    Retrofit mRetrofit = new Retrofit.Builder()

            .client(XyxApplication.initOKHttp())

            // 設置請求的域名

            .baseUrl(ApiAddress.URL)

            // 設置解析轉換工廠

            .addConverterFactory(GsonConverterFactory.create())

            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())

            .build();

    return mRetrofit.create(Api.class);

}

 

 


@GET

Observable<ImageBean> getImageInfo(@Url String url);

 

上邊兩個分別是初始化retrofit和,rxjava2註解。這樣我們的三劍客已經齊備。

相關demo下載連接:https://download.csdn.net/download/qq_36118367/12328027

 

引入Glide加載就好啦,相關緩存、預加載的內容有空我會重新寫一份~~

Demo做的比較着急,框架搭好後,其他的就可以自由發揮了。

效果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章