日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

[Android] Android MVP 架构下 最简单的 代码实现

發布時間:2023/11/27 生活经验 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Android] Android MVP 架构下 最简单的 代码实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?Android? MVP 架構下? 最簡單的 代碼實現

?

首先看圖:

上圖是MVP,下圖是MVC

MVP和MVC的區別,在于以前的View層不僅要和model層交互,還要和controller層交互。而在mvp中,view層只和presenter層交互,而model層也和presenter交互,presenter構成了view層和model層的橋梁,也解耦了view層和model層。這一點很關鍵。我認為,這也是mvp的本質:

解耦view層和model層,讓view層和model層通過presenter層進行通信。換個說法就是讓諸如網絡請求,數據庫讀寫的邏輯,從activity中剝離出來。activit只負責頁面的展示,不關心model層的邏輯。

?

簡單的MVP模式,3個class 和 1個interface 就可以實現

各文件主要功能如下:

1個interface:定義activity 要實現的回調方法

3個class:1個Model層定義文件 +? 1個業務邏輯 Presenter文件? + 1個Activity文件

?

列舉實現代碼

1)interface定義文件

MainCallBack.java

package com.jack.basemvp.basemvp;/*** 定義要實現的回調方法*/
public interface MainCallBack {void getMessage(String message);void error();
}

2)Model層文件

MainModel.java

package com.jack.basemvp.basemvp;import okhttp3.Call;
import okhttp3.OkHttpClient;
import okhttp3.Request;/*** 定Model*/
public class MainModel {public Call getData(String url) {OkHttpClient client = new OkHttpClient();Request request = new Request.Builder().url(url).build();return client.newCall(request);}
}

3)Presenter層文件

MainPresenter.java

package com.jack.basemvp.basemvp;import android.support.annotation.NonNull;import java.io.IOException;import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;/*** 定義業務邏輯 Presenter*/
public class MainPresenter {private MainCallBack callBack;private MainModel model;public MainPresenter(MainCallBack callBack) {this.callBack = callBack;model=new MainModel();}public void getUrlData(String url){model.getData(url).enqueue(new Callback() {@Overridepublic void onFailure(@NonNull Call call, @NonNull IOException e) {callBack.error();}@Overridepublic void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {callBack.getMessage(response.body().string());}});}}

4)activity調用

SimpleMvpActivity.java

package com.jack.basemvp.activity;import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;import com.jack.basemvp.R;
import com.jack.basemvp.basemvp.MainCallBack;
import com.jack.basemvp.basemvp.MainPresenter;import java.lang.ref.WeakReference;public class SimpleMvpActivity extends AppCompatActivity implements View.OnClickListener,MainCallBack{public EditText simple_et;Button btn_submit_req;TextView simple_tv;private MainPresenter presenter;private MyHandler handler;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_simple_mvp);simple_et = (EditText) findViewById(R.id.simple_et);btn_submit_req = (Button) findViewById(R.id.btn_submit_req);simple_tv = (TextView) findViewById(R.id.simple_tv);handler = new MyHandler(this);presenter = new MainPresenter(this);btn_submit_req.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.btn_submit_req:String url = simple_et.getText().toString();presenter.getUrlData(url);break;}}@Overridepublic void getMessage(String message) {Message msg = handler.obtainMessage(0, message);handler.sendMessage(msg);}@Overridepublic void error() {Message msg = handler.obtainMessage(1, "error");handler.sendMessage(msg);}private static class MyHandler extends Handler {private WeakReference<SimpleMvpActivity> reference;private MyHandler(SimpleMvpActivity activity) {reference = new WeakReference<>(activity);}@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);SimpleMvpActivity activity = reference.get();switch (msg.what) {case 0:activity.simple_tv.setText(msg.obj.toString());break;case 1:activity.simple_tv.setText(msg.obj.toString());break;}}}
}

?

?

具體代碼見Github:

https://github.com/wukong1688

?

本博客地址: wukong1688

本文原文地址:https://www.cnblogs.com/wukong1688/p/10794023.html

轉載請著名出處!謝謝~~

?

?

?

?



轉載于:https://www.cnblogs.com/wukong1688/p/10794023.html

總結

以上是生活随笔為你收集整理的[Android] Android MVP 架构下 最简单的 代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。